使用ignore_user abort和set_time_limit(0)用PHP编写的守护进程有多可行

2023-11-29

我正在研究守护进程,想知道使用 PHP 来做到这一点有多可行(在内存和 CPU 使用率以及可靠性方面):

<?php
// Ignore user aborts and allow the script
// to run forever
ignore_user_abort(true);
set_time_limit(0);

$fp = fopen('loop.log', 'w');
fwrite($fp, date('Y-m-d H:i:s') . ' Started' . PHP_EOL);
while(1) {
    fwrite($fp, date('Y-m-d H:i:s') . ' Looped' . PHP_EOL);
    if (file_exists('loop.stop')) {
        break;
    }
    // Sleep for 100 seconds
    sleep(100);
}
fwrite($fp, date('Y-m-d H:i:s') . ' Stopped' . PHP_EOL);
fclose($fp);

这个简单的例子(改编自 PHP 手册忽略用户中止) 只是容器脚本。实际的功能将被放置在while loop.

我已经让这个脚本在我的笔记本电脑上运行了 7 个小时,看起来不错,但作用不大。还有其他人尝试过这个吗?


我倾向于将循环放入 BASH 脚本中,以便定期清理所有 PHP 资源。

#!/bin/bash
clear
date

php -f doChecksAndAct.php
sleep 100
# rerun myself
exec $0

如果您在 PHP 脚本中执行任何特别繁重的设置任务,您还可以在其中放置一个小循环(例如 50-100 次迭代,如果它们之间没有暂停数秒)以减少总次数运行之间的开销时间。

添加:我在博客中介绍了 Bash/PHP(或其他语言)配对,以便您可以非常轻松地循环 PHP 脚本,然后退出以立即重新启动,或暂停一段时间 -在别处做工作——边栏运行工作人员.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用ignore_user abort和set_time_limit(0)用PHP编写的守护进程有多可行 的相关文章

随机推荐

  • 图像 (2D) 的 PSF(点扩散函数)

    我是图像分析 使用 Python 的新手 我想对我的数据 CT 扫描 应用 richardson lucy 反卷积 来自 skimage 为此 我通过特定的软件以 体素数 来估计PSF 它的值大约是 6 73 体素 但我不知道如何将它用作函
  • 如何在Python中获取当前模块属性的引用

    我想要做的在命令行中看起来像这样 gt gt gt import mymodule gt gt gt names dir mymodule 我如何获得对中定义的所有名称的引用mymodule从内部mymodule itself 像这样的东西
  • PHP cookie 有一个刷新延迟[重复]

    这个问题在这里已经有答案了 可能的重复 Cookie只在刷新时显示 我正在尝试设置一个基本的 PHP cookie 它会记住使用的颜色主题 然而 当我测试它时 颜色主题的设置和显示之间存在一次刷新滞后 澄清一下 我有一个选择表单 允许用户选
  • Swift 编译器挂起!这是一个错误吗?

    有一次 当我正在开发 Swift 项目时 Xcode 的状态栏中出现了 编译 Swift 源代码 消息 无论等多久 编译都没有完成 我回滚了最近的更改 很快意识到让编译器感到困惑的是一个非常简单的枚举结构 下面是一个说明该问题的 Playg
  • nodeJS将数据插入PostgreSQL错误

    我在使用 NodeJS 和 PostgreSQL 时遇到了一个奇怪的错误 我希望你能帮助我 我有大量的数据集 大约有 200 万个条目 我想将它们插入到数据库中 一份数据由 4 列组成 id string points float mid
  • plone 中的文件是否存在与修订版本一样多的副本?

    在 plone 中 如果文件 或任何内容 被修改 例如 4 次 则存在多少个物理副本 我正在使用 plone 4 1 其中文件和图像存储在文件系统上 内容对象由多个持久记录组成 对于文件系统上包含二进制 blob 文件的图像和文件 当内容对
  • 如何获取非公开成员的值

    如何在 C 中使用 OPCDA NET 获取 OPCGroup 的非公共成员的值 private void DataChangeHandler object sender DataChangeEventArgs e try object o
  • 当月剩余天数

    指定月份剩余天数 如何查找当月剩余天数 示例 如果当前月份是 11 月 今天的日期是 16 11 2016 一个月的天数 经过的天数 我想动态地做 在我的例子中 30 16 14 declare date date set date 16
  • Outlook 加载项 API 不会在 Firefox/Chrome 上持续触发 ItemChange 事件

    我们已在 Outlook 加载项的清单中启用任务窗格固定 并注意到除了 Windows Outlook 2016 客户端之外 现在 Outlook Office Online 中也提供固定支持 但是 那ItemChange切换邮件项目时 事
  • 无法在单个 UIViewController 中隐藏状态栏

    我想在单视图控制器中隐藏状态栏 但我的代码不起作用 我正在使用下面的代码 BOOL prefersStatusBarHidden return YES void viewWillApper BOOL animated UIApplicati
  • Undersore 的 _.now 如何工作?

    它看起来不像是用 JavaScript 编写的 如果你输入 now在控制台中 你只能得到 function now native code 通常只有当您尝试查看某些内部工作方式对浏览器不可见的内置方法时 您才会明白这一点 setTimeou
  • 查询保存为 npz 的 NumPy 数组的 NumPy 数组很慢

    我生成一个 npz 文件 如下所示 import numpy as np import os Generate npz file dataset text filepath test np load npz texts for text n
  • python 3中的函数注释出现“名称未定义”错误

    我正在尝试使用 python3 类型注释功能 这是一些没有注释的玩具函数 def fa func args return func args def fb x str return x returned fa fb Newton 这些工作正
  • 抑制 bash 中的警告输出

    mysql tzinfo to sql usr share zoneinfo mysql u root mysql 我尝试添加 2 gt dev null gt dev null 等 似乎没有什么可以抑制警告 mysql tzinfo to
  • 使用 PDO 插入数据库

    我正在尝试将数据插入服务器上的数据库中 要连接到我的数据库 我有以下代码 这一切都很好 我已将其包含在我的代码中 因此这不是问题 这是我将数据插入数据库的代码
  • 查找 Drawable 资源时出现 NotFoundException

    我从 android 开始 我想按照描述为单元格添加边框在这个答案中 所以我创建了 cell background xml 文件 Eclipse 在其中创建了该文件res drawable其中包含
  • 了解行内元素、垂直对齐、行框和行高

    vertical align bottom means the bottom inline box matches the bottom of its line box so in my case the inline box of spa
  • 使用 .save() 与 findByIdAndUpdate() 从数组中删除项目

    我在用 pull从 mongo db 中的数组中删除一条记录 它工作得很好 但是我在堆栈溢出的某个地方读到的一条评论 无法再次找到它来发布链接 让我很困扰 因为它评论说它不好用 save而不是使用 findByIdAndUpdate or
  • 为什么应该使用基类型声明方法参数?

    我声明了一个简单的方法来尝试将文本框的输入转换为 int 如下所示 int TryConvertTextToInt TextBox box do try catch 我的 IDE SharpDevelop 尝试给我一些重构建议 具体来说 b
  • 使用ignore_user abort和set_time_limit(0)用PHP编写的守护进程有多可行

    我正在研究守护进程 想知道使用 PHP 来做到这一点有多可行 在内存和 CPU 使用率以及可靠性方面