Php 使用Iron.io'从一个主工作者中产生子工作者;s钢铁工人服务

Php 使用Iron.io'从一个主工作者中产生子工作者;s钢铁工人服务,php,ironworker,Php,Ironworker,目前,我有一个PHP脚本(例如,masterProcessor.PHP),我的服务器使用cron定期执行该脚本。这个脚本有一个大约80个URL的静态列表,它必须获取并处理这些URL。由于处理每个URL需要几分钟,为了节省时间,脚本将80个URL分成大约10组(共8个),并为每组URL启动第二个PHP脚本(使用exec(“childProcess.PHP”)),并且该子PHP脚本实际处理从主脚本传递的大约8个URL中的每一个 我的目标是使用Iron.io的IronWorker服务来实现这一点,但我

目前,我有一个PHP脚本(例如,
masterProcessor.PHP
),我的服务器使用cron定期执行该脚本。这个脚本有一个大约80个URL的静态列表,它必须获取并处理这些URL。由于处理每个URL需要几分钟,为了节省时间,脚本将80个URL分成大约10组(共8个),并为每组URL启动第二个PHP脚本(使用
exec(“childProcess.PHP”)
),并且该子PHP脚本实际处理从主脚本传递的大约8个URL中的每一个

我的目标是使用Iron.io的IronWorker服务来实现这一点,但我仍然对如何实现这一点感到困惑。他们的很多文档都是用Ruby编写的,我不知道,他们的几个PHP示例显示了代码,但没有实际设置

我认为这是可行的,所以请让我知道我在这里是对的还是错的:

  • 创建一个“主”工作者和一个“子”工作者
  • 主工作程序将启动子任务,向每个任务发送一个包含要处理的URL的有效负载
  • 子工作者将处理负载中给定给它的URL
  • 最后,我需要安排主worker定期运行,就像我在PHP实现中通过cron所做的那样
  • 我有这个权利吗?一名员工是否有可能解雇其他多个员工/任务?如果是这样,那么如何使用PHP IronWorker库来实现呢


    任何指导或提示、资源等都将不胜感激。我为我的无知道歉,但我一直在阅读和研究,并尝试在本地进行实验,但我甚至无法让一个worker在Windows上本地运行(它说它已执行,但没有打印日志?)。

    我不确定PHP IronWorker是如何发生的,但您可以使用pcntl_fork函数来创建子进程。然后,脚本必须跟踪这些过程中的每一个。此外,这些功能只能在cli中使用,不能通过web界面使用。

    这是一个关于多处理的教程

    把脚本分成几个不同的文件怎么样。每个文件都有10个、20个或更多的URL。学习流程管理的工作原理可能会更容易。

    我建议尝试一下——这是一个已经实现了主脚本的小型助手框架。您只需要实现slave,并将每个url的1条消息推送到mq

    在任何情况下-您的方法是正确的,如果您不想出于任何原因使用iron_combine,只需按照您在问题中描述的方式进行即可。如果您遇到任何问题,iron.io会有一个很好的支持频道,如果您需要童工,这很容易

    首先,你需要

    • 客户端库 及
    • 凭证数据-您可以直接从HUD下载
      iron.json
    现在:

    1) 将这两个文件合并到主辅助程序中:

    file 'iron_worker.phar'
    file 'iron.json'
    
    2) 并像往常一样使用它:

    <?php
    require_once "phar://iron_worker.phar";
    
    $worker = new IronWorker();
    $worker->postTask('SlaveWorkerName', $payload);
    

    谢谢你提供的信息,这听起来是个不错的选择。然而,自从我发布了这个问题后,我就能够按照我的设想做到这一点,而且似乎起到了作用。:)很高兴你成功了!这是一种非常常见的IronWorker模式。这是我基本上已经在做的事情(除了我使用
    exec()
    而不是
    pcntl\u fork()
    ),但我想使用IronWorker服务完成同样的任务,因为整个过程在运行时只会轰炸我的服务器,这是每小时两次。我从10%的负荷变为400%的负荷,大约10分钟,每小时两次。