
私は 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 のデバッグ レベルを上げてください。