4

特定のスクリプトの出力をオンデマンドでブラウザにフラッシュしようとしましたが、プロダクション サーバーでは機能しません。

たとえば、「Phoca Changing Collat​​ion ツール」(Google で検索) を実行してみましたが、スクリプトの実行が終了するまで出力が表示されません。

どのサーバーでも正常に動作する他のスクリプトでバッファをすぐにフラッシュしようとしましたが、これは次のコードを使用しています。

echo "something";
ob_flush();
flush();

「ob_implicit_flush(1);」の設定 どちらも役に立ちません。

サーバーは、Linux で実行されている PHP 5.2.17 を使用した Apache 2.2.21 です。役立つ場合は、こちらの php.ini ファイルを参照してください: http://www.smallfiles.org/download/1123/php.ini.html

サーバーがスクリプト内のディレクティブを無視するという問題は、これだけではありません。サーバーは、次のようなタイムアウト コーディングも無視します。

ini_set('max_execution_time', 900*60);

set_time_limit(86400);

スクリプトは、php.ini のデフォルトで常にタイムアウトします。

スクリプトが IE で実行されるか Firefox で実行されるかは問題ではないようです。

4

2 に答える 2

1

この謎を解いた。両方とも。

出力バッファの問題を解決するには、.htaccess ファイル内の gzip 圧縮をオフにする必要がありましたが、スクリプト内で実行できればよかったのにと思います。

.htaccess ファイルに入力する内容は次のとおりです。

<IfModule mod_gzip.c>
    mod_gzip_on  No
</IfModule>

SetEnv no-gzip dont-vary

エラーなしで終了するスクリプトを修正するために、Apache ログ ファイルを確認したところ、PHP ではなく、Apache 構成にあることがわかりました。

このエラーがスクリプトがタイムアウトしたように見えるのを防ぐために、Apache のタイムアウトを増やす必要がありました。Apache で KeepAlive を有効にすることも、問題を完全に解決するのに役立ちました。

これが誰かの助けになることを願っています。他のみんなの助けに感謝します!

于 2012-07-14T19:23:00.040 に答える
0

php.iniディレクトリに基づいて変更される傾向があるため、誤ったファイルをロードしている可能性があります。

php.iniロードされたファイルを確認するには、次のように記述します。これにより、ファイルが存在するディレクトリが表示されます。php.netecho php_ini_loaded_file();を参照してください。

それが失敗した場合は、serverfault.com でサーバーの stackexchange サイトを参照してください

于 2012-07-04T08:29:19.333 に答える