【Apache】Ajaxコールバック関数の処理が60秒を超えるとタイムアウトする問題の原因と対応方法

【Apache】Ajaxコールバック関数の処理が60秒を超えるとタイムアウトする問題の原因と対応方法
sinceretechnology

 

 

 

 

 

はじめに

 

Drupal の Form API ( Web フォーム処理のための API )には Ajax のための機能がデフォルトで備わっています。それを使うとかんたんに Ajax 処理を実現することができます。 今回、この機能を使用してAjax処理をしていますが、60秒を超えるとタイムアウトになりAjaxエラーになりました。対応方法を調べたので今後のためにここに残しておきます。

 

 

 

 

原因

 

 

Apache設定

 

Apache設定ファイルにタイムアウト時間を追加します。

Timeout:デフォルトが60秒でこの時間を超えるとサーバーの接続は解除されます。

    ### TimeOut-Config ###
    Timeout 300
    KeepAlive On
    MaxKeepAliveRequests 100
    KeepAliveTimeout 15

 

 

php設定

 

max_execution_time:最大処理時間を無制限に設定する(set_time_limit関数でも設定可能)

default_socket_timeout:ソケット接続のタイムアウト値を無制限にする

max_input_time:ファイルのアップロード等などスクリプトで入力を受け付けることができる最大秒数を設定します。 

 

    //OPENAI実行に60s以上かかる場合があるためデフォルトタイムアウト値60sを無制限にする
    ini_set('max_execution_time', 0);
    set_time_limit(0);
    ini_set('default_socket_timeout', -1);
    ini_set('max_input_time', -1);

 

変更後は必ずアパッチの再起動をします。

 

sudo systemctl restart httpd php-fpm

 

KUSANAGIの場合は以下のコマンドでかんたんに再起動できます

 

kusanagi restart

 

 

 

 

 


この記事に関するご質問やご意見などございましたらお問い合わせフォームからお気軽にご連絡ください。