PHP 后台运行,求大佬

2021-02-21 17:18:31 +08:00
 PHPYgod
环境: 宝塔 LAMP apache Timeout:600
上代码,百度上 COPY 的
<?php
ignore_user_abort(true);
set_time_limit(60);
ob_end_clean(); //清除之前的缓冲内容,这是必需的
header("Connection: close"); //告诉浏览器,连接关闭了,这样浏览器就不用等待服务器的响应
header("HTTP/1.1 200 OK"); //可以发送 200 状态码,以这些请求是成功的,要不然可能浏览器会重试
ob_start();#开始当前代码缓冲
header("Content-type:text/html;charset=utf-8");
echo "running,,,,.";
$size=ob_get_length();
header("Content-Length: $size");
ob_end_flush();#输出当前缓冲
flush();#输出 PHP 缓冲
while(!file_exists('close.txt')){//只有不存在 close.txt 就一直运行
$fp = fopen('log.txt','a+');
fwrite($fp,date("H:i:s") . " \r\n");
fclose($fp);
sleep(10);
}
?>
浏览器访问是 等待响应直到 60S 后 503 网站也没有 log.txt 文件

求大佬指点。。。。。。。
2272 次点击
所在节点    PHP
6 条回复
815979670
2021-02-21 23:16:11 +08:00
可以考虑使用定时任务去触发 cli 没有超时的问题
liuxu
2021-02-22 01:03:50 +08:00
小兄弟你不要胡说,明明就有 log.txt ,你肯定是找错目录了

simapple
2021-02-22 09:00:28 +08:00
检查 close.txt ,写入 log.txt ? 文件名的问题?
NjcyNzMzNDQ3
2021-02-22 09:46:38 +08:00
后台运行就别用 LAMP 的 PHP-FPM 模式,如果还想用就 shel_exec("php -i") 来调用 php 的 cli 方式。
或者同#1 一样定时调用。
PHPYgod
2021-02-22 10:12:31 +08:00
@liuxu 嗯,有 log.txt 但是 set_time_limit(600); log.txt 内也只有 2 分钟的记录,无法长时间运行!
awanganddong
2021-02-22 10:39:27 +08:00
在浏览器里边,是通过 php-fpm 来执行的,属于请求响应模式,没有常驻内存。
一般 php-fpm 设置有超时时间,超时就会报 nginx 错误。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/754872

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX