【PHP】PHPで非同期処理を実現する方法のサンプルコード

開発ノウハウ
SPONSORED LINK

先日まで仕事で行っていた開発作業はPHPを使ったものだった。その中で技術的な課題として上がったのは、

  1. PHPでバックグラウンド処理(非同期処理)を実現する
  2. SOAP通信を利用する

の2点だった。会社にはPHPに詳しい人がほとんどいなかったので、ほぼネットの情報で解決したので正解なのかはわからないが、今回の開発での実装方法を備忘録として記しておく。
今回は1の実装方法のサンプルコードを紹介。

SPONSORED LINK

非同期処理の実装サンプル

PHPにはJavaでいうマルチスレッドのような概念はないため、非常に重たい処理を行う場合も同期処理しかできない。その解決策としては、PHPを外部プログラムとして実行させるしかなかった。

exec('実行したいプログラム > /dev/null &');

こんな感じで実装する。
「> /dev/null &」というのは非同期で実行するために必要なコードで、これがないと同期処理となってしまう。
サーバーはLinuxなのでそこで実行できるコマンドであれば、exec関数を使えば基本的にはなんでもできる。これを利用してPHPを実行する場合、

exec('php /【実行するPHPファイルのパス】/test.php > /dev/null &');

というように実行する。
コマンドとして実行するので、コマンドライン引数を渡すことも可能。ただし、これを使って外部プログラムに変数を渡す場合、必ず設定されているものでないと、受け取り側でindexがずれてしまうので注意が必要。

サーバーに複数のPHPがインストールされている場合の実装サンプル

また、サーバー環境によってはPHPが複数インストールされている可能性があるため、その場合は

exec('/【PHPのBIN】/php /【実行するPHPファイルのパス】/test.php > /dev/null &');

というように実装する必要がある。

PHPの開発ノウハウ

【PHP】PHPでSOAP通信を行う方法のサンプルコード

2011年8月5日

【PHPサンプルコード】Zipファイルを作成し、ブラウザからダウンロードさせる方法

2012年7月5日

WordPressについて

ブロガーにお勧め!WordPressテーマ「アルバトロス」の魅力を語ります(スマホ対策も万全)

2015年7月29日

WordPressテーマ「ハミングバード」の作者矢野ヨシキさんのデザイン!2016年リニューアルについて

2016年3月24日

MacでWordPressを動かす方法。WordPressの開発環境構築方法・手順を初心者向けに解説します

2012年6月10日

【WordPress】子テーマを作成・設定する方法。使うメリットはメンテナンス性の向上です

2012年7月3日

【WordPress】メニュー表示をApple風にするCSSサンプルコード

2012年6月18日

あわせて読みたい

SPONSORED LINK