ホームページ  >  記事  >  バックエンド開発  >  PHP マルチプロセス問題解決_PHP チュートリアル

PHP マルチプロセス問題解決_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-21 15:45:20741ブラウズ

さらに、入力データが不正で、スクリプトがそれを検出できずに異常終了した場合も、非常に不快になります
それでは、どうすればよいでしょうか? 心配しないでください。マルチプロセスが役に立ちます。
それでは、なぜそうなるのでしょうか?
利点: 1. 複数のプロセスを使用する場合、子プロセスの終了後にカーネルがリソースを再利用します。プロセス全体のスレッドを終了します。
常駐のメイン プロセスは、プロセスを再構築する機会を持ちます。
では、その方法は明確です。次に、PHP が提供する POSIX および Pcntl シリーズの関数を使用して PHP コマンド パーサーを実装します。メイン プロセスはユーザー Enter を受け入れ、子プロセスをフォークして実行し、子の終了ステータスをエコーする責任があります。
コードは次のとおりです。わからないことがあれば、マニュアルの関連する機能を読むか、メッセージに返信してください



。コードは次のとおりです:

#!/bin/env php /**php でマルチプロセス アプリケーションを示す例 * @filename fork.php
* @touch date Wed 10 Jun 2009 10:25:51 PM CST
* @author Laruence
* @license http://www.zend.com/license/3_0.txt PHP ライセンス 3.0
* @バージョン 1.0.0
*/
/**この関数が SHELL でのみ実行できることを確認してください*/
if
(substr(php_sapi_name(), 0, 3) !== 'cli')
{
die("このプログラムは CLI モードでのみ実行できます")
}
/**CLI モードでは、このステートメントは実際には不要です。*/
$pid = posix_getpid( ); //メインプロセス ID を取得します
$user = posix_getlogin(); //ユーザー名を取得します
<<USAGE: [コマンド | 式]
フォークで実行する php コードを入力します新しいプロセス
input quit
Shell Executor バージョン 1.0.0 by laruence
EOD;
while
(true)
{
$prompt = "n{$user}$ ";
$input = readline($prompt);
readline_add_history ($input);
if
($input == '終了')
{
break;
process_execute($input . ';')
exit(0); $input )
{
$pid = pcntl_fork(); // サブプロセスを作成します
if
($pid == 0)
{// サブプロセス
$pid =
echo
"* プロセス{$pid} が作成され、Executed:nn";
eval($input); //解析コマンド
exit;
}
else
{//メインプロセス
$pid = pcntl_wait($status, WUNTRACED); / /子プロセスの終了ステータスを取得
if
(pcntl_wifexited($status))
{
echo
"nn* サブプロセス: {$return['pid']} が {$status} で終了しました
}
}
}





http://www.bkjia.com/PHPjc/320361.html

www.bkjia.com

tru​​e

http://www.bkjia.com/PHPjc/320361.html
技術記事

さらに、入力データが不正でスクリプトがそれを検出できずに異常終了した場合は、どうすればよいでしょうか? 心配しないでください。マルチプロセスが役に立ちます。 、なぜこれが利点ですか... .

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。