我有一个php脚本,可用来赚取约100万。每天都请求特定的Web服务。

问题在于,在“正常”工作流程中,脚本几乎可以整天工作以完成工作。
因此,我研究了其他组件。基本上,我开发了一个脚本,该脚本使用多 curl GET请求访问主脚本,以为每500条记录生成一些随机的临时值,最后使用包含所有生成的临时值的POST发出另一个多 curl 请求。
但是我不认为这是正确的方法,因此我希望一些建议/解决方案在不使用其他/external应用程序(例如我当前使用的curl脚本)的情况下向主脚本添加多线程功能。
这是主要脚本:http://pastebin.com/rUQ6pwGS

最佳答案

如果要正确执行操作,则应安装消息队列。我首选redis,因为它是“数据结构服务器,因为键可以包含字符串,哈希,列表,集合和排序集合”。 Redis也非常fast

使用blpop(使用php <yourscript>生成几个工作线程并发处理工作)来监听新消息(工作),并使用rpush将新消息推送到队列中。 生成进程是昂贵的(相对),并且在使用消息队列时,创建进程仅需执行一次。

如果可以的话,我会选择phpredis(需要重新编译PHP),因为它是用C编写的扩展,因此比纯PHP客户端要快得多。其他PRedis也是您可以使用的相当成熟的库。

您也可以将此brpop/rpush用作某种锁定(如果需要)。这是因为:



我建议您看看Simon's redis tutorial,以了解Redis必须提供的强大功能。

关于php - php多线程,mysql,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4840844/

10-15 11:02