1

我正在使用 Google 最新的 Windows App Engine PHP SDK v1.9.38 在本地开发服务器上运行一些长时间运行的脚本,并且由于某种原因它们在 30 秒时超时。错误是例如“致命错误:请求被中止,因为它超过了最大执行时间。在第 8 行的 [我的脚本路径]\timertest.php 中”

自动缩放的超时时间应该是 60 秒!我不确定我在这里遗漏了什么......我正在一个脚本中进行各种文件处理,但我随后编写了一个测试脚本,看看它是否也在 30 秒内失败,并且确实如此。脚本是:

<?php

$a = 1;

do
    {
    syslog(LOG_INFO, $a.' Sleeping for 10 secs...\n');
    sleep(10);
    $a++;
    }
while($a < 8)

?>

输出是:

INFO: 1 Sleeping for 10 secs...\n
INFO: 2 Sleeping for 10 secs...\n
INFO: 3 Sleeping for 10 secs...\n
ERROR:root:php failure (255) with:

stdout:

X-Powered-By: PHP/5.5.26

Content-type: text/html

<br />

<b>Fatal error</b>:  The request was aborted because it exceeded the maximum execution time. in <b>[my script path]\timertest.php</b> on line <b>8</b><br />

INFO     2016-06-02 20:52:56,693 module.py:788] default: "GET /testing/timertest.php HTTP/1.1" 500 195

我在想这是某个地方的配置错误,但不确定是什么或在哪里。我的 app.yaml 非常标准:

application: ak2016-1
version: 1
runtime: php55
api_version: 1

handlers:
# Serve php scripts.
- url: /(.+\.php)$
  script: \1
  login: admin

和 php.ini 也是:

google_app_engine.disable_readonly_filesystem = 1
upload_max_filesize = 8M
display_errors = "1"
display_startup_errors = "1"

正如我所说,这只是本地开发 SDK 服务器的问题,我不担心在线直播方面,因为我正在处理的文件是本地的(并且需要保持不变)。

感谢您的任何建议等!

4

1 回答 1

2

我在请求计时器文档上部署了应用程序示例,但无法复制您的问题。我的请求在约 60 秒后全部超时:

$ time curl https://<project-id>.appspot.com/timeout.php 
Got timeout! Cleaning up...
real    1m0.127s
user    0m0.021s
sys     0m0.010s

然后我复制了你的代码,app.yaml看看php.ini我是否可以复制它,并在我的系统日志中收到以下内容:

INFO: 1 Sleeping for 10 secs...\n
INFO: 2 Sleeping for 10 secs...\n
INFO: 3 Sleeping for 10 secs...\n
INFO: 4 Sleeping for 10 secs...\n
INFO: 5 Sleeping for 10 secs...\n
INFO: 6 Sleeping for 10 secs...\n
INFO: PHP Fatal error:  The request was aborted because it exceeded the maximum execution time. in /base/data/home/apps/.../timeout2.php on line 9

但是,如果您在 30 秒后仍然遇到请求超时的问题,我建议您将有问题的代码移到任务队列中。我希望这有帮助!

于 2016-06-07T00:39:48.970 回答