[解決済み] PHPキューシステムの構築方法
2022-02-15 07:28:26
質問
PHPのキューシステムを構築する必要があり、これを見つけました。
冴えた記事
を使い、PHPのキューシステムを作りましたが、セットアップも使い方もとても簡単でした。
http://squirrelshaterobots.com/programming/php/building-a-queue-server-in-php-part-1-understanding-the-project
以下は、シェル(puTTyなど)から実行するqueue.phpのコードです。
<?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関数を動作させることでした。
私の質問は、quot;サーバーが再起動するとき/したときに、自動的にジョブを開始するようにするにはどうすればよいですか?
コメントで指摘されたように、リンク切れを編集し、後世に残すために優れたウェブアーカイブを紹介しました。
解決方法は?
<ブロッククオート私の質問は、quot;サーバーが再起動するとき/したときに、ジョブを自動的に開始させるにはどうすればよいですか?
サーバーの起動時に開始するもののリストに追加することで。 残念ながら、その方法はOSやOSのバージョンによって大きく異なります。 おそらく、もう少しクロスプラットフォームなものを使いたいのでしょう。 私は、次のようなものを使って、大きな幸運を手に入れました。 スーパーバイザー これは、お使いのOSのパッケージリポにあるはずです。
とはいえ、あなたが行っているのは 狂気 . あなたがやろうとしていることは、以前にも素晴らしい人たちによって、もっとうまくやられています。 をチェックしてみてください。 ギアマン ワークキューシステムとそれに付随する PECL拡張 . スーパーバイザーは、ギアマンのワーカーを生かすのにもかなり便利なんだ。
関連
-
[解決済み】予期せぬ例外。SQLSTATE[HY000] [1045] Access denied for user ****@'localhost' (using password: YES)
-
[解決済み] 警告:mysqli_fetch_array()は、パラメータ1がmysqli_resultであることを期待する、オブジェクトはで指定された。
-
[解決済み] PHPで配列から要素を削除する
-
[解決済み] PHPでSQLインジェクションを防ぐにはどうしたらいいですか?
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] PHPのエラーを表示させるにはどうしたらいいですか?
-
[解決済み] PHPのstartWith()関数とendsWith()関数
-
[解決済み] JavaScriptでStackとQueueを実装するには?
-
[解決済み】PHPの'foreach'は実際どのように動作するのですか?
-
[解決済み] リファレンス - このシンボルはPHPで何を意味するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】XAMPPポート80をPID 4の「Unable to open process」が使用中 [重複] XAMPPポート80をPID 4の「Unable to open process」が使用中。]
-
[解決済み】phpのob_start()の使い道は?
-
[解決済み】子テーマのCSSが親テーマをオーバーライドしない
-
[解決済み】警告:mysql_fetch_array()はパラメータ1がリソースであることを期待、ブール値は[重複]で与えられる]
-
[解決済み】file_get_contents( )が動作しない。
-
[解決済み] [Solved] Fatal error: 非オブジェクトのメンバ関数fetch_assoc()の呼び出し [重複]。
-
[解決済み】PHPのクラスが見つからないが、インクルードされている
-
[解決済み】/var/www/htmlとは何ですか?[クローズド]
-
[解決済み】mysqli::query(): mysqli をフェッチできない
-
[解決済み] Forbidden :このサーバーの /phpmyadmin にアクセスする権限がありません。