php - 弹出的进程永不消亡
问题描述
我正在使用这个简洁的代码在浏览器上实时跟踪日志文件(谢谢!)问题是即使在用户关闭选项卡/浏览器/PC 后,tail 仍然在运行
有任何想法吗?
窗口关闭时仍在写入日志,所以我知道服务器正在尝试发送某些内容并且失败,但是 if connection_status()!=0 似乎永远不会触发
<?php
$files = scandir('somefile', SCANDIR_SORT_DESCENDING);
$newestfile = $files[0];
echo "$newestfile<br/>\n";
$handle = popen("tail -fn +1 ./somedir/" . $newestfile . " 2>&1", 'r');
while(!feof($handle)) {
if (connection_status()!=0){
exec("killall tail");
pclose($handle);
}
$buffer = fgets($handle);
echo "$buffer<br/>\n";
ob_flush();
flush();
}
pclose($handle);
?>
更新:
我最终使用了这个的修改版本: https ://github.com/richardvk/web_file_tail
向这个人致敬!
解决方案
推荐阅读
- .net - 在 VB.NET 中的类初始化期间可以做“数据控制流”吗?
- javascript - 用 WPML 和 Wordpress 翻译 js?
- javascript - 使用 HTML/JS/CSS 缩短链接
- flutter - 在哪里定义命名参数'sliver'
- android - 是否可以在卫星模式下在谷歌地图上移动相机?
- regex - 搜索冒号时添加 Sed
- bitbucket - BitBucket 中 Webhook 的“用户过滤器”和“分支过滤器”等效项
- asp.net-core - 找不到页面时始终提供 index.html
- c - 终止标准输入链接到其他程序输出的 C 程序
- java - 通过构造函数注入 bean 依赖项时出现 NoSuchBeanDefinitionException