.cgi ファイルの Curl 取得、常に 504 ゲートウェイ タイムアウト

.cgi ファイルの Curl 取得、常に 504 ゲートウェイ タイムアウト

私は IP カメラを持っており、Get メソッドを使用してアラームをオンにします。

ブラウザを使用するとすべて正常です

http://da***.com:808/set_alarm.cgi?user=***&pwd=***&motion_armed=1"

このphpファイルを使用しようとすると、常に「504ゲートウェイタイムアウト」が発生します。

<?php

    function httpGet($url)
      {
        $ch = curl_init();  

        curl_setopt($ch,CURLOPT_URL,$url);

        $output=curl_exec($ch);
        curl_close($ch);
        return $output;
      }

     echo httpGet("http://da***.com:808/set_alarm.cgi?user=***&pwd=***&motion_armed=1");
?>

誰か助けてくれませんか?

ありがとう

答え1

同じサーバーからスクリプトを要求していると思いますが、これは504 PHP バックエンド プロセスが 1 つしかないことが原因である可能性が高いため、ブラウザーから要求すると、要求は 1 つだけになり、サーバーが取得されます。

php-cgi を使用している場合は、php-cgi を起動する前に環境変数を設定すると役立つと思います。

PHP_FCGI_CHILDREN=0 に設定する

PHP_FCGI_MAX_REQUESTS=10000 を設定します

バックエンドが複数のリクエストを同時に処理できること、およびスクリプトが何らかの形でデッドルック (自身の出力を要求する) を作成しないことを確認します。

FCGI ログを確認してください。それでも問題が解決しない場合は、nginx のデバッグ レベルを上げてください。

関連情報