要检查 php 脚本是否仍在运行,您可以使用 PHP 内置函数 get_headers()
来检查请求是否还在进行中,以及 headers_sent()
来检查响应 headers 是否已经发送。下面是一个简单的代码示例:
function isScriptStillRunning($scriptFilePath) {
// 通过 HTTP 请求方法、时间和脚本文件路径来创建一个 HTTP 头
$header = "GET /$scriptFilePath HTTP/1.1\r\n\
Host: example.com\r\n\
\r\n";
if (headers_sent()) {
// 如果响应标头已发送,则脚本的响应已完成
return false;
}
// 发送 HTTP 请求并捕获响应
ob_start();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/isScriptStillRunning.php");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $header);
$response = curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// 当脚本执行完成时,响应头会被关闭,返回 HTTP_OK
if ($http_code === 200) {
$isScriptStillRunning = true;
} else {
// 否则返回 HTTP_NOT_MODIFIED,表示脚本的执行没有完成
$isScriptStillRunning = false;
}
// 如果响应头被意外中断,这将关闭文件缓冲区
ob_end_clean();
return $isScriptStillRunning;
}
领取专属 10元无门槛券
手把手带您无忧上云