2016-06-02 1 views
1

Я использую последнюю версию Google для Windows Engine Engine SDK, v1.9.38, для запуска некоторых длинных сценариев на локальном dev-сервере и по какой-то причине они синхронизируются через 30 секунд. Ошибка, например. «Неустранимая ошибка: запрос был прерван, потому что он превысил максимальное время выполнения. [Путь к скрипту] \ timertest.php в строке 8»App Engine Win SDK Время ожидания PHP за 30 секунд, должно быть 60?

Время автоматического истечения времени должно составлять 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" 

Как я уже говорил, это вопрос только на локальном сервере DEV SDK, я не беспокоился онлайн-живая сторона, поскольку файлы, которые я обрабатываю, являются локальными (и должны оставаться такими).

Спасибо за любые предложения и т. Д.!

ответ

2

Я развернул образец приложения в документации Request Timer и не смог дублировать вашу проблему. Мои запросы все тайм-аут после ~ 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, чтобы увидеть, если я мог бы дублировать, и получил следующее в моих syslogs:

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 секунд, я бы предложил переместить код нарушения в task queues. Надеюсь, это поможет!