2016年7月8日のブックマーク (2件)

  • スレッド処理は慎重に – PHPでのスレッド処理 : 前編 | POSTD

    私が覚えている限り、非常に重い(または非同期の)タスク処理に関して、PHPは常に厳しい評価をされていました。これまではずっと、長いタスクを並列化したければ pcntl_fork を通してフォークするという方法を取らなければいけなかったので、タスクの結果を適切に処理することができませんでした。 そこで私たちは、キューイング(どちらかと言えばタスクを遅くするだけ)やReactPHP、または他の言語を一緒に使うといった、より複雑なソリューションへと向かっていきましたが、PHPでもスレッド処理は可能なのです。そしてより重要なのは、 その方法はあなたが思っているよりもはるかに簡単だということです。 この記事では、 pthreads 拡張(POSIX Threadsの略)について説明します。2012年ごろから広く使われていますが、多くの人がその存在を忘れているか、使うのが苦痛だと考えると思います。その

    スレッド処理は慎重に – PHPでのスレッド処理 : 前編 | POSTD
  • PHP のシグナルハンドラのいろいろ - ngyukiの日記

    ここ数年、PHP でシグナルを使う機会が多かったので、気づいた点などを整理してみます。 当のシグナルハンドラと PHP のシグナルハンドラ pcntl_signal() で登録する PHP のシグナルハンドラは、当の意味でのシグナルハンドラではありません。なので、シグナルハンドラから非同期シグナルで安全では無い関数でも呼び出すことが出来ます。 <?php declare (ticks = 1); pcntl_signal(SIGTERM, function ($signo) { printf("%d -> %s\n", $signo, "だが断る"); }); posix_kill(posix_getpid(), SIGTERM); exit(0); 当のシグナルハンドラは次の箇所で定義されており、所謂リンクドリストに受信したシグナル番号を記録しています。 pcntl.c:1216

    PHP のシグナルハンドラのいろいろ - ngyukiの日記
    miyahan
    miyahan 2016/07/08