タグ

並列処理に関するwith_no_parachuteのブックマーク (4)

  • PHPでfork(バックグランド処理)をする方法 - PHP,MySQL,Flex,JSな日々+イラストとか

    ちょいとcronとwgetを使ってバックグラウンド処理を複数行いたいなぁって思って調べてみました。 phpにはperlみたいなforkがデフォルトではないので、自前でそれっぽいのを作ります。 もちろんライブラリで用意されていますが、設定がめんどい。 バックグラウンド処理させたいプログラム 2秒止まってファイルを出力します。 if( $_GET['m'] == "sleep" ){ echo "hoge"; sleep(2); echo "moge"; file_put_contents( "hoge" , "hoge"); exit; } unix系 wgetを使用してバックグラウンド処理できます。 別にシェルでもOK。最後に「 > /dev/null &」(返り値を破棄して実行)があればいいみたい。 $url = "http://localhost/?m=sleep"; system('

    PHPでfork(バックグランド処理)をする方法 - PHP,MySQL,Flex,JSな日々+イラストとか
  • PHPで並列処理/個人的なメモと備忘録 2003年 11月

    >>PHP で並列処理 PHP で複数の Web サイトの更新チェックをするようなスクリプトを個人的に作っているのですが、その時のメモです。サーバからデータを取得する時に、PHP にはスレッドがありませんので、一つずつ取得していると、かなりの時間が掛かることになります。そこで、スレッドの代替になりそうなスクリプトを 2種類ほど考えてみました。PHP 4.3.0 以降でしか動作しません。また、Linux でしか確認していません。もっと良い方法がありましたら、教えてください。 まず、一つ目は、pcntl_fork() を使う方法です。この関数は、PHP のコンパイル時に、--enable-pcntl を付けてコンパイルしないと使用できません。詳しくは、プロセス制御関数についての説明を読んでください。pcntl_fork() を使って並列処理を行う方法を考えてみました。 例えば、$array に

  • pcntl extensionを使って一定個数の子プロセスに作業させる方法 - Blog::koyhoge::Tech

    日はノッキングオンさんで第22回PHP勉強会が開催されたので参加してきました。 その後の宴会で、PHPをCLIで使うときにexec()関数ではなくpcntl extensionを使って子プロセスを制御する話をしたら、周りの人のいつきがいつになく良かったので、このネタでエントリを書くことにします。 まずはコードから。 <?php // child process params $nchild = 0; $nfinished = 0; $cur_idx = 0; $maxchild = 10; $params = range('a', 'z'); $paramlen = count($params); for (;;) { if ($nfinished >= $paramlen) { break; } if (($nchild <= $maxchild) && ($cur_idx < $p

    pcntl extensionを使って一定個数の子プロセスに作業させる方法 - Blog::koyhoge::Tech
  • PHPで並列処理 - KoshigoeBLOG

    PHP で並列処理 - 個人的なメモと備忘録より。 ちょいといじくって『出来てる』気分に浸ってみた。実際のforkとかシグナルとかは曖昧なまま。 今の仕事で『GETクエリを変更して作った複数のURLに対して、複数クライアントからの同時リクエスト』についてのプチストレステストをする事になった。で、abで『異なるURL』に対してリクエストする事が出来るか分からないし、他のツールも思いつかない。探すのも面倒だし、あまり時間もないしという事でスクリプト書いた方が早いかなと思って家で調査。 きっと、RubyとかPerlとかだと普通にマルチスレッド使えて分かり易いんだろうけど、テスト対象のシステムがPHPで書かれてるし、そのリポジトリには出来るだけPHPコードを入れた方がいい気がしたのでPHPで調査。参考にした記事が2003年に書かれたものだったので、PHP5系ではこの方法じゃなくても出来るのかも。け

  • 1