Я должен был создать систему очередей PHP и нашел эту блестящую статью http://squirrelshaterobots.com/programming/php/building-a-queue-server-in-php-part-1-understanding-the-project/ и I использовал его для создания системы очереди PHP, ее очень легко настроить и использовать.
Ниже приведен код для queue.php, запускаемый из оболочки (puTTy или somesuch).
<?PHP //. set this constant to false if we ever need to debug //. the application in a terminal. define('QUEUESERVER_FORK', true); //////// fork into a background process //////// if(QUEUESERVER_FORK){ $pid = pcntl_fork(); if($pid === -1) die('error: unable to fork.'); else if($pid) exit(0); posix_setsid(); sleep(1); ob_start(); } $queue = array(); //////// setup our named pipe //////// $pipefile = '/tmp/queueserver-input'; if(file_exists($pipefile)) if(!unlink($pipefile)) die('unable to remove stale file'); umask(0); if(!posix_mkfifo($pipefile, 0666)) die('unable to create named pipe'); $pipe = fopen($pipefile,'r+'); if(!$pipe) die('unable to open the named pipe'); stream_set_blocking($pipe, false); //////// process the queue //////// while(1){ while($input = trim(fgets($pipe))){ stream_set_blocking($pipe, false); $queue[] = $input; } $job = current($queue); $jobkey = key($queue); if($job){ echo 'processing job ', $job, PHP_EOL; process($job); next($queue); unset($job, $queue[$jobkey]); }else{ echo 'no jobs to do - waiting...', PHP_EOL; stream_set_blocking($pipe, true); } if(QUEUESERVER_FORK) ob_clean(); } ?>
Самое сложное – заставить функции pcntl работать на моем сервере.
Мой вопрос: «Как мне заставить задание запускаться автоматически, когда / если сервер должен перезагрузиться?»
Мой вопрос: «Как мне заставить задание запускаться автоматически, когда / если сервер должен перезагрузиться?»
Добавив его в список вещей, начатых при запуске сервера. К сожалению, инструкции для этого сильно зависят от операционной системы и версии ОС. Вероятно, вы захотите использовать нечто более кросс-платформенное. Мне было очень повезло с супервизором , который вы, вероятно, можете найти в репозитории пакета на своей ОС по выбору.
Тем не менее, вы идете по пути безумия . То, что вы делаете, было сделано раньше, лучше, потрясающими людьми. Проверьте систему очереди работы Gearman и сопроводительное расширение PECL . Бывает, что супервизор очень удобен для того, чтобы ваши рабочие Gearman были живы.