- 締切済み
system関数でphpが動作しない
phpプログラムからphpプログラムをバックグラウンドで動作させようと下記のようにsystem関数を使いましたが、phpが動作しませんでした。 system("/usr/local/bin/php /home/user/www/test.php > /dev/null &"); 「動作しない」様子が、異常でして、コマンドラインからtopで調べてみると、phpのプロセスIDが何度も立ち上がり、上記関数があるプログラムをサーバーから消さないと、その状態が続きます。しかし、プロセスは立ち上がっても、phpプログラムは正常に動作していなようです。 さくらインターネット(スタンダード)の共用サーバーを使っています。サーバーのOSは、FreeBSD 4.10です。 よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- yambejp
- ベストアンサー率51% (3827/7415)
<?PHP ob_start(); include("test.php"); ob_end_clean(); ?> としてみてはいかがですか?
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
マニュアルからの抜粋です。 注意: この関数を用いてプログラムを開始し、バックグラウンドで実行させたままにしたい場合、このプログラムの出力をファイルまたは他の出力ストリームにリダイレクトするようにする必要があります。さもないと、 PHP はプログラム実行終了までにハングしてしまいます。 注意: セーフモード が有効な場合、 safe_mode_exec_dirの中にある実行プログラムのみ実行可能です。実際的な理由により、現在、実行プログラムへのパスに ..を含めることはできません。
お礼
ご回答頂きまして、ありがとうございます。 下記マニュアル文を読んでいませんでしたので、試してみましたが、同じ状況でした。 よろしければ、確認させて頂きたいのですが、下記の文は、「php.ini」に safe_mode_exec_dir='/home/user/www/test' といった文を加えることでよろしいのでしょうか。 >注意: セーフモード が有効な場合、 safe_mode_exec_dirの中にある実行プログラムのみ実行可能です。実際的な理由により、現在、実行プログラムへのパスに ..を含めることはできません。 よろしくお願い致します。
お礼
ご回答頂きまして、ありがとうございます。 プログラムは正常に動作しましたが、バックで動かすプログラム(test.php)にsleep(25)と書いて、25秒間待たせたところ、元もプログラムも25秒待ってしまいましたので、バックグラウンドでの動作ではないようでした。 ともあれ、ご回答ありがとうございました。