[PHP-users 15200]Re: 子プロセスの生成方法について

Y.Shima bun @ inter7.jp
2003年 5月 12日 (月) 20:21:00 JST


嶋崎です。

件名にもあるとおりsystem関数は外部プログラムを別プロセスで起動する関数です。
ですので、コマンド(バイナリ)などやShell・Perlなどで記述されている
プログラムを呼び出すことが可能です。
ですので呼び出される側もphpで記述するのであれば、
apacheのモジュールとしてではなくシェルからも実行できる必要があります。

---呼び出し元 start.php-------------
<?
$strto = "bun @ inter7.jp";
$strsbj = "件名";
$strmsg = "本文";
$strhdr = 'From: personal<from @ a.jp>';
system("./sys_send_mail.php '$strto' '$strsbj' '$strmsg' '$strhdr' > /dev/null&");
?>
-------------------------------------


---呼び出される sys_send_mail.php---
#!/usr/local/bin/php
<?
sleep(30); //テストのため30秒sleep
//print_r($argv);
//var_dump($argv);
mb_send_mail($argv[1], $argv[2], $argv[3], $argv[4]);
?>
--------------------------------------
※sys_send_mail.phpにはapacheのユーザに実行権限が必要です。

上記にファイルを/usr/local/apache/htdocs(DocumentRoot)にあるとします。
ブラウザからhttp://<SERVER>/start.phpにアクセスすると
ブラウザは30秒待たず、応答しますが
sys_mail_send.phpは30秒間プロセスとして残りメールを送信してきます。

以上、宜しくお願いいたします。



>Iharaです。嶋崎さま。色々ありがとうございます。
>
>しかしながら、まだ、私の実力が足りないため解決には至っていません。
>どういうことかといいますと、
>もともと、
><? php
>hogehoge
>$ret = mb_send_mail( $strto, $strsbj, $strmsg, $strhdr);
>if( ! $ret ) {
>error hogehoge;
>}
>?>
>と書いていたのを、
>sys_send_mail.php
><?php
>function sys_send_mail( $strto, $strsbj, $strmsg, $strhdr )
>{
>$ret = mb_send_mail( $strto, $strsbj, $strmsg, $strhdr);
>if( ! $ret ) {
>error hogehoge;
>}
>}
>?>
>という関数を用意し、
>
><? php
>hogehoge
>$ret = system("sys_send_mail.php $strto $strsbj $strmsg $strhdr >
>/dev/null &");
>if( ! $ret ) {
>error hogehoge;
>}
>?>
>としましたが、エラーとなってしまいます。また、メールも送られていません。
>
>フルパスでないといけないのかと思い、
>system("/usr/local/apache/htdocs/sys_send_mail.php $strto $strsbj
>$strmsg $strhdr > /dev/null &");
>としてみましたが、これでもだめです。
>
>本当は、/tmpフォルダへのアクセス権は無いのですが、
>sys_send_mail.phpを/tmpフォルダにコピーして、
>system("/tmp/sys_send_mail.php $strto $strsbj $strmsg $strhdr >
>/dev/null &");
>としてみましたが、これでもだめです。
>
>php.iniのsafe_modeはOffになっています。
>system関数は、引数に command文字列を指定するので、このやり方ではだめなのは
>なんとなくわかりますが、解決策はわかりません。
>
>たびたびすみませんが、よろしくお願い致します。
>
>
>_______________________________________________
>PHP-users mailing list
>PHP-users @ php.gr.jp
>http://ns1.php.gr.jp/mailman/listinfo/php-users
>

_______________________________________________
http://www.inter7.jp
メーラーからも。ブラウザからも使える
無料IMAPアカウント 30MB




PHP-users メーリングリストの案内