sql >> データベース >  >> RDS >> Mysql

PHPforeachユーザースクリプトはapacheをハングさせるようです

    この動作は、セッションロックのように聞こえます。 PHPセッションが機能するデフォルトの方法は、セッションをロックすることです(2つのプロセスがセッションオブジェクトに書き込むのを防ぐため)。これは通常、一般的な短期間のPHPスクリプトでは問題ありませんが、実行時間の長いものがある場合は問題になる可能性があります。

    アプリケーションがセッションをまったく使用していない場合は、session.auto_startをオフにする必要があります php.iniまたは.htaccessの場合: http ://www.php.net/manual/en/session.configuration.php#ini.session.auto-start (そこに表示されない場合、またはすでにオフになっているが、何らかのフレームワークを使用している場合は、フレームワークがセッションを開始している可能性があります。その場合は、戦うよりも次の解決策に進む方が簡単です。フレームワーク。)

    一部のページでセッションを使用しているが、この長時間実行プロセスでは使用していない場合、解決策は、スクリプトの開始時に session_write_close()

    <?
    set_time_limit(0);
    
    require '../connect.php';
    require '../includes/ses.php';
    
    session_write_close();
    
    $i = 1;
    ....
    

    繰り返しになりますが、フレームワークの警告:フレームワークがセッションを開始している場合は、session_write_close();を配置します。 フレームワークファイルを含めた後、前ではありません! (コメントでそうだったとおっしゃっていたので、require行の後に入れました。)

    実行時間の長いプロセスでセッションを使用する必要があるが、読み取り専用の場合でも、上記は機能します。 https://stackoverflow.com/a/14409902/841830 を参照してください (その答えが示すように、長時間実行されるプロセスの最後にセッションに書き込む必要がある場合は、それも可能です。)

    (追記:これはコメントですでに回答されていますが、回答として投稿するという彼の申し出にWrikkenを取り上げました。はい、噂は真実です。数人の担当者のために何でもします...)

    >


    1. SQLServer2017でリレーションシップを作成する

    2. MySQL-SELECT WHERE date <X

    3. SPRINGフレームワークでUncategorizedSQLExceptionとORACLEメモリの問題を生成するクエリを削除します

    4. MariaDBでのSHOWCOLLATIONの仕組み