В настоящее время я запускаю сервер Apache (2.2) на моем локальном компьютере (Windows), который я использую для запуска некоторых PHP-скриптов, чтобы позаботиться о какой-то утомительной работе. Один из сценариев включает в себя тонну перемещения, изменения размера и загрузки / выгрузки файлов на другой сервер. Я бы очень хотел, чтобы сценарий работал постоянно, так что мне не нужно записывать сценарий, открывая его каждый раз, когда он истекает.
set_time_limit(0); ignore_user_abort(1);
Оба установлены в моем скрипте, но примерно через 30 минут до часа скрипт останавливается, и я получаю сообщение 504 Gateway Time-out в своем браузере. Есть что-то, чего я не хватает в Apache или PHP, чтобы предотвратить таймаут? Или я должен запускать сценарий по-другому?
Или я должен запускать сценарий по-другому?
Определенно. Вы должны запустить свой скрипт из командной строки ( CLI )
если я должен реализовать что-то вроде этого, я бы сделал два разных скрипта:
Рабочий процесс должен быть:
Опрос Ajax:
<script> var $myToken; function ajaxPolling() { $.get('process_controller.php?action=getStatus&token='+$myToken, function(data) { $('.result').html(data); }); } setInterval("ajaxPolling()",60*1000); //Every minute </script>
есть некоторые соображения о связи между двумя процессами, в зависимости от того, сколько экземпляров сценария B вы могли бы выполнять параллельно
session_start(); $token = session_id();
session_start(); $token = session_id();
Если вам нужно запустить его в своем браузере, вы должны убедиться, что в файле php.ini нет ограничения на выполнение php, но также нет ограничения, установленного в mod_php (или том, что вы используете) под apache.
Используйте system()
php system()
для вызова сценария оболочки, который запускает службу / фоновое задание.