【问题标题】:php function to schedule execution of a task at a certain timephp函数在特定时间安排任务的执行
【发布时间】:2015-01-17 13:45:47
【问题描述】:

我想创建一个基于 Web 的应用程序,用PHP 编写,就像一个提醒应用程序,所以用户输入一行文本和一个提醒时间,应用程序获取这两个并在指定时间提醒用户.我完全实现了程序,但是对于调度,我有一个问题:程序应该在设置提醒和提醒用户之间做其他工作,但我发现唯一可以做类似事情的函数是 sleep(),但似乎sleep() 不是最好的选择,因为在设置提​​醒和提醒用户之间,程序什么也做不了。

php中是否有一个函数可以启用调度任务,并且在指定的时间,PHP程序运行该任务。

我不想要 croncrontabscheduled task 或任何其他依赖于操作系统的解决方案。

【问题讨论】:

  • 为什么不想使用 crontab?您可以编写一个脚本,将数据保存到数据库并在特定时间对该数据执行任何操作。
  • 检查*.com/questions/1812436/php-and-scheduled-tasks,它讨论了一些替代方案。
  • “我不想要 cron”听起来有点像“我想敲钉子,但我不想用锤子”——请解释一下原因?
  • @georg php中没有内置功能可以在后台管理一些简单的任务吗?
  • 您是否将这些任务存储在数据库中?

标签: php scheduled-tasks


【解决方案1】:

仅在 PHP 中无法在指定时间执行任务。

您可以创建一个条件,将当前时间与任务应执行的时间进行比较,并在每个请求上运行它,但这并不能保证在准确的时间执行,因为可能根本没有用户请求。

这就是 cron 的用途。

【讨论】:

  • 这不是基于正常事件执行的任务(我知道时间和时间的传递是事件,但是......)。您在提醒中完成了一项任务,然后例如 5 小时后应用程序说“嘿!你应该做点什么!”。如果您想检查时间以知道何时执行任务并弹出消息,1)它浪费了宝贵的系统资源(忙于等待)2)程序不能做任何其他事情。
【解决方案2】:

这在 PHP 中是不可能的。

您可以检查您的主机是否提供类似 cron 的选项(我的提供 URL 调用调度)。

如果用户始终连接到您的网络应用程序,另一种选择是在 javascript 和/或 ajax 中管理警报。

【讨论】:

    最近更新 更多