dポイントプレゼントキャンペーン実施中!

Apache+PHP+MySQL1でサイトを作っています。

時間がかかる処理をバックグラウンドで処理したいのですが、メイン処理の変数をバックグラウンド処理に受け渡したいのですがうまくいきません。

http://www.stackasterisk.jp/tech/php/php02_02.jsp

インターネットで調べたところ上記URLが見つかったので参考にサンプルを作ってみました。

--------sample.php(メイン処理)-------
<?php
$arg = 123456;
System("/usr/local/bin/php bgprog.php $arg &");
?>
--------bgprog.php(バックグラウンド処理)-------
<?php
sleep(10);
echo "読み込み完了<br>";
echo $arg;
?>

このサンプルだと10秒スリープした後に「読み込み完了」と表示されるのですが$argが表示されません。

上記URLに「メインの処理から引数を渡したい場合には、bgprog 側できちんと受け取るようにしておかなければなりません」と書かれているのですがその方法がまったくわかりません。

このプログラム自体に無理があるのか、bgprog側でなんらかの処理をすれば解決するのかもわかっていません。

よろしくお願いします。

A 回答 (2件)

コマンドラインで実行する場合、


$argv[1]
で一つめの引数を取り込むことができます。
なので
echo $arg;

echo $argv[1];
にすればいいと思います。
    • good
    • 0
この回答へのお礼

具体的な回答ありがとうございます。
回答のように記述したところ期待通りに動いてくれました。

これ一発で完全解決です。
ただただ感謝です。

お礼日時:2005/05/05 18:33

> 上記URLに「メインの処理から引数を渡したい場合には、


> bgprog 側できちんと受け取るようにしておかなければなりません」
> と書かれているのですがその方法がまったくわかりません。

phpでなら、起動時引数は、$_SERVER['argv']で参照できます。
例示されているbgprog.phpは、単に$argを出力しようとしてますが、これは呼び出し元の変数とは、別の変数として扱われますので、$argが表示されないのは、正しい動きです。

参考URL:http://jp2.php.net/manual/ja/features.commandlin …
    • good
    • 0
この回答へのお礼

PHPの動きまで解説していただき感謝です。

まだまだ勉強不足でこのあたりのPHPの動きに関しては疎いですが、大変ためになりました。これを機会に知識を増やせるようがんばりたいと思います。

ありがとうございました。

お礼日時:2005/05/05 18:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!