douyong1886 2011-08-28 01:59
浏览 69
已采纳

PHP在动态时运行脚本? 为cron工作还是不工作?

I need to run scripts at dynamic times (coinciding with a datetime in a database). Any ideas how to accomplish this?

Example:

Database says tomorrow at noon in 1 in a datetime field, then i want to run the script tomorrow at noon.

  • 写回答

2条回答 默认 最新

  • duannaikuang1301 2011-08-28 02:03
    关注

    A very simple approach is to have a cron-job call a PHP script every 1 minute, and have it check the database for things that need done. If something needs done NOW(), then do it and remove from database.

    You need to consider things like locking, process stacking, multiple processes, etc... to make this robust. But if your need is simple, this is a simple way to make it work.

    Add this to crontab:

    * * * * *   /usr/bin/php /path/to/my/script.php
    

    And in /path/to/my/script.php

    <?php
    $ts = time();
    
    // Run for up to 50 seconds
    while($ts + 50 > time())
    {
       ... SELECT id, job_stuff FROM JobTable WHERE JobDate <= NOW() ...
    
       process job
    
       ... DELETE job_stuff FROM JobTable WHERE id = ...
    
       sleep(5);       
    } 
    

    Note, this is not robust. A robust script would grab a record while locked, update it to a "processing" status, process it, and update it to a "complete" status. This means that multiple processes could work at this same time (even if accidental) and not duplicate jobs. Also, this means that a single failure would not stop the train.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 目详情-五一模拟赛详情页
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算
  • ¥100 嵌入式系统基于PIC16F882和热敏电阻的数字温度计
  • ¥15 cmd cl 0x000007b
  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line