PHPマルチスレッド、無期限実行ページ

934 ワード

PHP無限実行ページといえば、まずset_time_limit(0);,確かに、これはページを無期限に実行することができます.しかし、これも当てはまらない場合があります.たとえば、nginxで単一のPHPページの実行時間を制限したり、データ統計をしたりすると、ページをずっと回転させることはないでしょう.次に、私が考えているソリューションを共有します.もちろん、必ずしも最適ではありません.
まず、大量の演算に関わるコードを単独でページに書きます.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モードのため、ファイルは無期限に実行できます.これも変相がマルチスレッドを実現したことに相当します!