You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
![プロセスとかスレッドとかプロセス間通信とかについて書く場所](https://cdn-ak-scissors.b.st-hatena.com/image/square/1ef26f6cb4349557952890dbe3e567f7f98dc151/height=288;version=1;width=512/https%3A%2F%2Fgithub.githubassets.com%2Fassets%2Fgist-og-image-54fd7dc0713e.png)
子プロセスを作成する例です。 myDaemon.2010-10-11.tar.gz をダウンロードします。 設定の変更と子プロセスの内容の変更は myDaemon.php です。 起動方法の例です。 $ php myDaemon.php $ tail -f /tmp/myDaemon.child_log ... $ kill -TERM `cat /tmp/myDaemon.pid` # 止まる。 $ kill -USR1 `cat /tmp/myDaemon.pid` # 子プロセスの終了を待って止まる。 $ kill -HUP -`cat /tmp/myDaemon.pid` # ログファイルを再度開く。子プロセスも開く。 説明です。 <?php // シグナルを受け取るのに必要です。 declare(ticks = 1); // クラスをロードします。 require_once("c
PHPのpcntl_fork() を使用してping監視スクリプトの並列処理をやってみました。 結果、同時に起動する子プロセスの数にほぼ比例して実行時間が短縮されました。 ここではPHPのPEAR、及び Net_Ping を使用します。 テストで使用したOSはCentOS5なので、まずphpとPEAR、及びNet_Pingをインストールします。 #yum install php php-pear* #pear install Net_Ping #!/usr/bin/php <?php $nowdate = date(’Y/m/d H:i:s’, time()); echo $nowdate.”\n”; $filename = “hosts.txt”; require_once ‘Net/Ping.php’; $ping = Net_Ping::factory(); $ping->s
えー、勢いあまってPHPでマルチプロセスを実装してみました。 ある意味血迷ってるといまさらながら思いますが、最初は・・・言語かえるのやだし、ちょこっとググッたらできそうな感じだったので。。。 もちろん、やっとちゃんと動きましたよ。 ええかなりちゃんとしてます。 でも、、、Cとかお流行のJAVAに書き換える日はもう見えてるんで。ええ。 ググれば出てくるさんぷるクリプト 大体、「PHP pcntl_fork」でぐぐればいっぱい使い方が見つかります。みつかるけど・・・これだけではなんだかようわからない。 PHP: pcntl_fork - Manual //子プロセス生成 $pid = pcntl_fork(); if ($pid == -1) { // fork失敗 echo 'Failed forc process.'; exit(1); } else if ($pid) { //親プロセス
シェルからでも重い処理というのはちょこちょこあって、例えば超デカいログファイルを移動して圧縮したりというお仕事は世界中のあらゆる場所で毎日行われていたりする。コマンドラインからでも大量の圧縮済みログファイルをいっぺんに展開したい、とか。 あるディレクトリ以下に存在するたくさんのファイルを(圧縮済みのものを除いて)全部 bzip2 圧縮したい!と思ったら、とりあえずさくっと次のようにコマンドラインで叩けばいい。 $ find . -not -name '*.bz2' | xargs bzip2 これで、まあそんなに問題なく効率的にbzip2圧縮ができる。だがしかし。 最近は複数コアのCPUが普通に転がってるし、あまつさえHyperThreadingが有効になってたりしてOSから見える論理CPU数がハンパない。普通に8とかある。その一方で複数コアを使用してくれるコマンドというのはあんまりなくて
分散処理を手軽にやりたい。 GNU Parallel も便利だけど、ppssならシェルスクリプトだから設置するだけで実行できて便利! って事で試してみた。 インストール これだけ。 $ cd ~/bin $ wget http://ppss.googlecode.com/files/ppss-2.85.tgz $ tar zxvf ppss-2.85.tgz $ rm ppss-2.85.tgz オプション 今回使うオプション # -d 対象ディレクトリ # -f リストファイル # -c 実行コマンド # -p 並列数 ppss --helpの結果 kuwano@kuwano03:~/bin$ ./ppss -h |P|P|S|S| Distributed Parallel Processing Shell Script 2.85 PPSS is a Bash shell script
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く