두 개의 파일 client.php와 server.php가 있습니다. 클라이언트 파일이 서버 파일에 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);
나는 해결책을 찾아 냈다. 나는 이것이 당신이 요구하는 (확실하지 않은이 가능하다)하지만 난 다른 스레드에 의해 처리되는 큐있을 것입니다 정확히 아니라는 것을 알고
function send_result_to_client()
{
$myString = '...';
$size = strlen($myString);
header("Content-Length: $size");
header('Connection: close');
flush();
}
좋아, 나는 해결책을 찾아 냈다. 나는 원래의 글을 편집했다. –
aaah 그 말이 의미가있어, 좋은 하나 :) – Manatok
당신이 말한 것처럼 그것은 가능합니다. atd (또는 Scheduler 또는 이와 유사한 여러 포트와 래퍼 중 하나)를 사용하여 수행하십시오. 또는 crontab에서 실행중인 다른 PHP 스크립트. – LSerni