使用 PHP 后台任务获取 HTTP 1.1 错误 400
GET HTTP 1.1 error 400 with PHP background task
我正在为 运行 PHP 中的后台任务创建一个 GET 请求。
代码在我的开发机器上运行,但在生产环境中失败。
GET http://localhost:8080/hms/controllers/background/bday.php HTTP 1.1 Host: localhost Connection: Close HTTP/1.1
关于回显 echo fgets($socketcon, 128);我收到以下错误。
400 Bad Request Date: Mon, 08 Jul 2019 05:47:01 GMT Server: Apache/2.4.33
(Win32) OpenSSL/1.0.2o PHP/5.6.36 Vary: accept-language,accept-charset
Accept-Ranges: bytes Connection: close Content-Type: text/html; charset=utf-
8 Content-Language: en Expires: Mon, 08 Jul 2019 05:47:01 GMT
我的代码
$host = 'localhost';
$remote_house = 'http://localhost:'.APACHEPORT.'/hms/controllers/background';
$socketcon = fsockopen($host, APACHEPORT);
if($socketcon) {
$socketdata = "GET $remote_house/".$scriptName." HTTP 1.1\r\nHost: $host\r\nConnection: Close\r\n\r\n";
fwrite($socketcon, $socketdata);
fclose($socketcon);
}
设法用 1 毫秒超时的 CURL 做同样的事情,这有效地使其 运行 在后台。
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $remote_house.$scriptName,
CURLOPT_USERAGENT => 'User Agent X',
CURLOPT_TIMEOUT_MS => 1
));
$resp = curl_exec($curl);
curl_close($curl);
我正在为 运行 PHP 中的后台任务创建一个 GET 请求。
代码在我的开发机器上运行,但在生产环境中失败。
GET http://localhost:8080/hms/controllers/background/bday.php HTTP 1.1 Host: localhost Connection: Close HTTP/1.1
关于回显 echo fgets($socketcon, 128);我收到以下错误。
400 Bad Request Date: Mon, 08 Jul 2019 05:47:01 GMT Server: Apache/2.4.33
(Win32) OpenSSL/1.0.2o PHP/5.6.36 Vary: accept-language,accept-charset
Accept-Ranges: bytes Connection: close Content-Type: text/html; charset=utf-
8 Content-Language: en Expires: Mon, 08 Jul 2019 05:47:01 GMT
我的代码
$host = 'localhost';
$remote_house = 'http://localhost:'.APACHEPORT.'/hms/controllers/background';
$socketcon = fsockopen($host, APACHEPORT);
if($socketcon) {
$socketdata = "GET $remote_house/".$scriptName." HTTP 1.1\r\nHost: $host\r\nConnection: Close\r\n\r\n";
fwrite($socketcon, $socketdata);
fclose($socketcon);
}
设法用 1 毫秒超时的 CURL 做同样的事情,这有效地使其 运行 在后台。
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $remote_house.$scriptName,
CURLOPT_USERAGENT => 'User Agent X',
CURLOPT_TIMEOUT_MS => 1
));
$resp = curl_exec($curl);
curl_close($curl);