2

SOAP投稿を非同期的に受け入れ、再フォーマットされた情報を別のWebサービスに転送するphpスクリプトがあります。投稿は元々myPhpServer.phpに送信されます。これは次のとおりです。

include('util.php');
$InvoiceNumber = (string)simplexml_load_string(file_get_contents("php://input"))->Order->InvoiceNumber;
exec("wget -bqo /dev/null --post-data 'InvoiceNumber=$InvoiceNumber' http://mysite.com/auto/myPhp.php");

これはmyPhp.phpによって受け入れられます。これは、ログファイルに追加するときを除いて、ファイルの書き込み操作はありません。

file_put_contents
(
    'log.txt', 
    date('Y-M-j H:i:s T')."\t$InvoiceNumber\t".postToWebService($Order)."\n",
    FILE_APPEND
);

このプロセスにより、myPhp.php。[#]という名前の新しいファイルがこのディレクトリに生成されます。ここで、#は1から始まり、スクリプトの使用ごとに増分します。したがって、しばらくすると、これはmyPhp.php.1、myPhp.php.2、myPhp.php.3などの読み取り不可能な0kbファイルの束になります。残りの部分は外部データの読み取り/書き込みを行わないため、原因は上記のものであると思います。少なくとも、この動作を一般的に引き起こす原因は何ですか?

4

1 に答える 1

4

これをして:

exec("wget -bqo /dev/null --post-data 'InvoiceNumber=$InvoiceNumber' http://mysite.com/auto/myPhp.php");

これは、LOG(エラー)メッセージを/ dev / nullに書き込むwgetを実行しますが、myPhp.phpを呼び出すファイルを取得し、そのためのファイルを作成します。

-Owgetのmanページを読んでください。ただし、を使用しているのと同じように、output-documentを指定するために使用できると思います-o

于 2012-07-30T15:00:15.040 に答える