PHPマルチスレッド、無期限実行ページ
934 ワード
PHP無限実行ページといえば、まずset_time_limit(0);,確かに、これはページを無期限に実行することができます.しかし、これも当てはまらない場合があります.たとえば、nginxで単一のPHPページの実行時間を制限したり、データ統計をしたりすると、ページをずっと回転させることはないでしょう.次に、私が考えているソリューションを共有します.もちろん、必ずしも最適ではありません.
まず、大量の演算に関わるコードを単独でページに書きます.exe.php.
そして、このページを実行するために中間ページを書きます.do.php、コードは以下の通りです.
最後に、必要に応じて_exe.phpページの場所には、次のコードが追加されています.
まとめると,中間ページを用いてphpのcliモードを呼び出し,実行ファイルを行う.phpのcliモードのため、ファイルは無期限に実行できます.これも変相がマルチスレッドを実現したことに相当します!
まず、大量の演算に関わるコードを単独でページに書きます.exe.php.
そして、このページを実行するために中間ページを書きます.do.php、コードは以下の通りです.
<?php//
$name = $_GET['name'];
// cli ,
exec("php _do.php $name");
最後に、必要に応じて_exe.phpページの場所には、次のコードが追加されています.
$opts = array(
'http' => array(
'method' => "GET",
'timeout' => 2, // ,2
'user_agent'=>"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
)
);
$context = stream_context_create($opts);
file_get_contents(’_do.php?name=abc‘, false, $context);
まとめると,中間ページを用いてphpのcliモードを呼び出し,実行ファイルを行う.phpのcliモードのため、ファイルは無期限に実行できます.これも変相がマルチスレッドを実現したことに相当します!