-1

私は毎晩スクリプトを実行していますが、スクリプトの出力はメールアドレスにのみ送信されます。しかし、問題は、自分のメールボックスで出力のコピーを受け取る必要があることです。スクリプトにシャットダウンハンドラーを登録し、実際にデータを表示するob_get_contentsなどの関数を使用してメールを送信しようとしました。しかし、私が端末に印刷した最後のものだけです。

cronMail('Cron', ob_get_contents());

呼び出される関数は、デフォルトの受信者と送信者を追加し、PHPメール関数を呼び出す単純な関数です。

メールの出力は次のとおりです。

array()

端末には次の出力があります。

Starting cron...
Exiting...
array()

誰かが出力全体を受け取る方法を教えてもらえますか?ob_startメソッドを使用して出力バッファーを開始しました。そして、各行の後に、ob_flushメソッドが呼び出されていることを確認します。これにより、スクリプトが直接呼び出された場合に、出力もブラウザーに送信されます。

4

1 に答える 1

1

ob_flush邪魔になります。マニュアルページのリンクされた説明を参照してください。それについてはかなり明確です。バッファをフラッシュして出力します。

あなたはそれを望まない。それへの呼び出しを削除し、あなたは大丈夫なはずです。

ob_start();

... your script without "ob_flush()" ...

$buffer = ob_get_clean();  # finally get the output buffer as string
echo $buffer;              # pass output along for cron
cronMail('Cron', $buffer); # send your mail

このバリアントにより、独自の電子メールを確実に取得できますが、出力はcronに渡されます。これは、関数でエラーレポートを作成する場合に役立ちますcronMail。これにより、少なくともそれをさらにデバッグする方法があります。

もう1つの方法は、外出先で出力を保存する出力処理関数を登録することです。しかし、それはささいなことではないので、私はそれを避けます。

于 2012-10-01T10:00:11.293 に答える