Tôi đã phải xây dựng một hệ thống xếp hàng PHP, và tìm thấy bài viết xuất sắc này http://squirrelshaterobots.com/programming/php/building-a-queue-server-in-php-part-1-understanding-the-project/ và tôi đã sử dụng nó để tạo ra một hệ thống xếp hàng PHP, rất dễ cài đặt và sử dụng.Làm thế nào để xây dựng một hệ thống xếp hàng PHP
Dưới đây là mã cho queue.php, chạy từ trình bao (puTTy hoặc 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();
}
?>
Phần khó nhất là nhận các chức năng pcntl hoạt động trên máy chủ của tôi.
Câu hỏi của tôi là "Làm cách nào để bắt đầu công việc tự động khi/nếu máy chủ phải khởi động lại?"
Điều gì, chính xác, _is_ câu hỏi của bạn? –
@MartinBean Làm cách nào để tôi bắt đầu công việc tự động khi/nếu máy chủ phải khởi động lại? –
bạn có thể sửa đổi kịch bản bắt đầu của máy chủ để thực hiện việc này hoặc bạn có thể thêm tập lệnh sẽ báo cáo trạng thái tập lệnh/máy chủ và tập lệnh thứ hai để khởi động lại công việc và sau đó sử dụng chúng từ máy chủ cục bộ hoặc từ xa để theo dõi máy chủ/công việc khởi động lại (với cronjob) – llamerr