【问题标题】:Run php script in background on nginx在 nginx 后台运行 php 脚本
【发布时间】:2012-10-23 02:13:31
【问题描述】:

我正在尝试为一家商店 cms 开发一个支付模块。 付款基于在银行的收单。

因此,首先为每个订单在银行侧创建(使用 curl)一张“票”。在银行服务器上的付款页面上,该客户端以其票证 ID 被转发。如果客户付款并按下“返回商店”按钮,一切都很好。
但是,如果客户付款并且不按此按钮,我需要检查结果(他是否付款)。它也是由 curl 制作的。我正在通过票证 ID 请求信息并接收一个数组,其中包含我需要的参数是我需要检查的结果代码。

所以我需要自动检查它(例如,一个小时内每 5 分钟 1 次)。 Cron 帮不了我,因为它都是动态进程。

我创建了一个返回结果的函数。但是我怎样才能以任何间隔在后台启动它呢?

【问题讨论】:

  • 银行可以给您付款通知吗?这就是 PayPal 的做法,因此您不必连续轮询它们。
  • @Jack 是的,这是最好的方法。但遗憾的是,目前银行只能以这种方式运作。

标签: php background automation


【解决方案1】:

使用 cron。 PHP 不提供调度程序之类的功能,因为它超出了该语言的范围。您可以使用 DB 来存储整个过程所需的一些参数。

【讨论】:

    【解决方案2】:

    我将扩展一点 WebnetMobile 的答案,了解如何使用 cron 来满足您的需求。

    您的数据库中可能有一个表,您可以在其中存储从银行获得的票证,以及无论何时成功或失败以及票证的创建日期。

    然后,如果您想要从银行票据创建日期起每五分钟检查一次,无论它是否成功(如果未知),您应该运行一个 cron 每分钟,它将执行以下操作:

    1. 检查是否存在未定义状态(成功或失败)的银行票据。
    2. 检查是否创建的时间(不带秒)减去当前时间(不带秒)MOD 5 == 0。
    3. 如果为 true,则表示从创建工单开始又过了 5 分钟,应该检查,否则什么都不做。

    我认为这会做你想要的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 2013-05-14
      相关资源
      最近更新 更多