PHP-скрипты не отвечают через 120 секунд - PullRequest
2 голосов
/ 20 октября 2010

Этот действительно меня озадачил. Я не сталкивался с этой проблемой на других серверах, над которыми работал.

Это на сервере Ubuntu 10.04.1 LTS с PHP 5.3.2-1ubuntu4.5.

Когда у меня есть PHP-скрипт, который не выводит больше 120 секунд, скрипт не будет показывать никаких последующих выводов; тем не менее, любой вывод не будет выполнен. Это происходит как для php5-cgi, так и для php5 (cli). Например:

1. $iSleep = 120;
2. echo 'Now: '.date('H:i:s')."\n";
3. echo 'Sleeping for: '.$iSleep."\n";
4. echo 'Will wake up at: '.date('H:i:s', (time()+$iSleep))."\n";
5. sleep($iSleep);
6. echo 'Woke up at: '.date('H:i:s')."\n";
7. mail('test@example.com', 'Subject', 'Message');

Я выведу весь вывод обратно на экран через строку 4. Строка 6 никогда не появится на экране, но я получу электронное письмо из строки 7. Если я изменю строку 1 на 119 или меньше, код будет выполнить полностью, как ожидалось. Пожалуйста, дайте мне знать, если вы хотите узнать какие-либо другие настройки (php.ini) или номера версий. Заранее спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 23 октября 2010

PHP, кажется, отвечает правильно, когда я подключаюсь от других клиентов.Мне нужно выяснить, чем отличается клиент, к которому я подключаюсь.

0 голосов
/ 20 октября 2010

Мой ответ также в основном является предположением, но у вас есть нормальная переменная max_execution_time . По умолчанию это 30 согласно документации. Но одна оговорка упоминает:

Максимальное время выполнения не зависит от системных вызовов, потоковых операций и т. Д. Более подробную информацию см. В функции set_time_limit ().

Я уверен, что mail () - системный вызов, поэтому вы хотите использовать set_time_limit , как описано.

Надеюсь, это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...