wordpress   发布时间:2022-04-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在Windows上运行PHP应用程序 – 守护进程或cron?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我需要一些实施建议.我有一个MYSQL数据库,它将被远程写入以便在本地处理任务,我需要用 php编写的应用程序,以便在进入时执行这些任务. 但当然我的php应用程序需要被告知何时运行.我想过使用cron作业,但我的应用程序是在Windows机器上.其次,我需要每隔几秒钟不断检查一次,而cron只能每分钟检查一次. 我想过编写一个php守护进程,但我正在接受它的工作,如果它甚至是一个好主意! 我很感
我需要一些实施建议.我有一个MysqL数据库,它将被远程写入以便在本地处理任务,我需要用 PHP编写的应用程序,以便在进入时执行这些任务.

但当然我的程序需要被告知何时运行.我想过使用cron作业,但我的应用程序是在Windows机器上.其次,我需要每隔几秒钟不断检查一次,而cron只能每分钟检查一次.

我想过编写一个PHP守护进程,但我正在接受它的工作,如果它甚至是一个好主意!

我很感激有关最佳方法的任何建议.

pyCron是Windows的一个很好的CRON替代品:

由于此任务非常简单,我只需设置pyCron即可每分钟运行以下脚本:

set_time_limit(60); // one minute,same as CRON ;)
ignore_user_abort(false); // you might wAnna set this to true

while (true)
{
    $jobs = getPendingJobs();

    if ((is_array($jobs) === truE) && (count($jobs) > 0))
    {
        foreach ($jobs as $job)
        {
            if (executeJob($job) === truE)
            {
                markCompleted($job);
            }
        }
    }

    sleep(1); // avoid eaTing unnecessary cpu cycles
}

这样,如果计算机出现故障,您将遇到60秒的最坏情况延迟.

您可能还想查看信号量或某种锁定策略,例如使用APC变量或检查是否存在锁定文件以避免竞争条件,例如使用APC:

set_time_limit(60); // one minute,same as CRON ;)
ignore_user_abort(false); // you might wAnna set this to true

if (apc_exists('lock') === falsE) // not locked
{
    apc_add('lock',true,60); // lock with a ttl of 60 secs,same as set_time_limit

    while (true)
    {
        $jobs = getPendingJobs();

        if ((is_array($jobs) === truE) && (count($jobs) > 0))
        {
            foreach ($jobs as $job)
            {
                if (executeJob($job) === truE)
                {
                    markCompleted($job);
                }
            }
        }

        sleep(1); // avoid eaTing unnecessary cpu cycles
    }
}

如果你坚持使用PHP守护进程帮自己一个忙,放弃这个想法,请使用GeaRMAN.

编辑:我曾经问过一个你可能感兴趣的相关问题:Anatomy of a Distributed System in PHP.

大佬总结

以上是大佬教程为你收集整理的在Windows上运行PHP应用程序 – 守护进程或cron?全部内容,希望文章能够帮你解决在Windows上运行PHP应用程序 – 守护进程或cron?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。