私はclient.phpとserver.phpの2つのファイルを持っています。 クライアントファイルは、HTTP要求をサーバーファイルに送信します。サーバーファイルは要求を処理するのが非常に遅いので、クライアントに「OK」と答えてもらい、結果は電子メールで送信されます。サーバーから直接HTTPリクエストを中断する
しかし、私は適切なヘッダーでサーバーがHTTP要求を閉じて、そのジョブを続行させることを知らない。 1秒のタイムアウトを指定すると、要求がサーバーによって受け入れられるかどうかを知ることができません。
PHPでも可能ですか?どのようにするか知っていますか ?
client.php:
<?php
$resource = curl_init();
curl_setopt($resource, CURLOPT_URL, 'http://localhost/server.php');
curl_setopt($resource, CURLOPT_RETURNTRANSFER, true);
curl_setopt($resource, CURLOPT_TIMEOUT, 30);
curl_exec($resource);
server.phpという
<?php
header('200 OK');
echo 'OK the request is correct, the result will be sent by email';
// How to write the method below?
send_result_to_client();
// Simulates a slow process
sleep(60);
[OK]を、私は解決策を見つけました。関数send_result_to_clientで は、ように見えるはずです:
function send_result_to_client()
{
$myString = '...';
$size = strlen($myString);
header("Content-Length: $size");
header('Connection: close');
flush();
}
[OK]を私は解決策を見つけました。私は元の投稿を編集しました。 –
ああ、それは意味がある、素敵なものです。 – Manatok
あなたが言ったのと同じことが可能です。 atd(またはスケジューラ、またはその周りのさまざまなポートとラッパーのいずれか)を使用してください。 crontabから実行している別のPHPスクリプト。 – LSerni