【问题标题】:Is there any way to get response from server without cron in php?有没有办法在 php 中没有 cron 的情况下从服务器获取响应?
【发布时间】:2020-02-04 05:30:03
【问题描述】:

我想运行将扫描数据库并自动执行操作但不使用 cron 的脚本。我使用 PHP 作为编程语言,使用 MySQL 作为 DBMS。在这里,我提到了我正在尝试开发的功能的快速想法

我有一个模块,我需要在 24 小时内通知用户动态时间。那就是用户正在发布一个帖子,如果他在 24 小时内没有得到任何回复,那么他将自动收到通知。因此,如果一位用户在晚上 8:30 发帖,那么他将在第二天的同一时间收到通知。如果第二个用户在晚上 7:30 发帖,那么他将在第二天晚上 7:30 收到通知。

现在,首先想到的是设置 cron,因为理想情况下应该有一种调度程序,它按照计划运行脚本。在这种情况下,我们需要安排特定的时间间隔来自动运行脚本,但这里我不会有任何时间间隔的固定时间。我知道我们也可以通过在几分钟内设置 cron 来做到这一点,但是我发现让服务器每 5-10 分钟运行一次脚本的选项并不可行。所以,我决定找一个替代品(如果可能的话),并考虑在 PHP 或服务器中是否有任何技术可以让脚本自动运行、扫描数据库、获取时间,如果它在 24 小时内到达,然后发送通知.

我也从我的一位同事那里得到了使用套接字的建议,但是我也觉得没用

【问题讨论】:

  • feasible to let server run the script on every 5-10 mins 为什么?如果这个脚本只检查和通知?

标签: php mysql cron


【解决方案1】:

你想要什么,并且正在描述,一个cronjob。

“但是这里我不会有任何固定的时间间隔”

您的意思是说您无法收到类似“我希望 用户在 24 小时后收到通知,但它不能像这样工作”这样的内容吗?
如果是这样,那么这是一个逻辑问题,可以通过以下方式解决:

$users2notify = getUsersWithAction24hoursAgo();
notifyUsers( $users2notify ); // only notify actual needed users

如果您因为技术限制而无法使用 cronjobs,我建议您切换主机。 cronjobs 确实没有合适的替代品,因为 cronjobs 做得很好。

PS:你朋友的 socket 建议,忽略它,因为它只是将问题转移到 Javascript。

【讨论】:

    【解决方案2】:

    使用cron 是最简单和最类似于PHP 的解决方案,但如果你真的讨厌cron,你可以启动一个nodejs 应用程序,这将延迟24 小时的请求:你发送一个请求到http://localhost:5000/delay?replayTo=http://localhost:80/che‌​ckUser?id=$idOfUserT‌​oCheck并且 nodejs 会在 24 小时后发出 get 请求;您将不得不开发 nodejs 应用程序,但这并不复杂。

    在本例中,5000 是 nodejs 应用程序将监听的端口;它可以是任何未使用的端口。

    【讨论】:

      猜你喜欢
      • 2016-12-10
      • 2012-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-26
      • 2011-06-04
      • 1970-01-01
      • 2010-12-10
      相关资源
      最近更新 更多