我正在用php编写一个Wordpress插件,下一步就是添加到这个插件中。
添加将从网上抓取数据,发送表单等。我对这部分几乎准备就绪,因为我对Wordpress插件有任何想法 - 它是用 ruby使用mechanize 编码的。我还没有在php中找到类似于机械化的东西。
但我不知道从Wordpress调用我的ruby脚本的最佳方法是什么。一些任务将由cron管理。那些基于用户请求的呢?
答案 0 :(得分:7)
依赖于Ruby的WordPress插件不可移植。如果你是唯一一个将使用它的人,那就没关系。
如果Ruby脚本需要返回一个将被调用它的PHP脚本立即使用的结果,那么exec()之类的东西是唯一的方法。确保您转义传递给Ruby脚本的任何参数;否则你会受到注射攻击。
如果Ruby脚本不需要立即返回结果(例如一些后台处理,例如缩略图生成),那么我认为最好的方法是将PHP脚插入MySQL数据库或类似的东西。 Ruby脚本可以在后台运行或从cron运行,定期检查数据库以查找新作业,并执行它需要执行的任何处理。这种方法避免了exec()的性能开销和安全性问题,并且它可以说也更具可伸缩性。 (类似的方法是让Ruby脚本监听套接字,并且你的PHP脚本将连接到套接字。但是这需要更多的工作来使它正确。)
答案 1 :(得分:2)
如果我是你,我会处理来自cron的所有红宝石。在DB中创建一个队列来处理用户请求,然后让cron调用的脚本(在ruby中?)从队列中获取所有未处理的作业并开始运行它们,然后从队列中删除该作业(或者设置某种标记为它正在完成)。这样你就不必调用exec
,除非用户在具有超级用户访问权限的VPS / Dedicated服务器上运行,否则大多数情况下都会被禁用。
您还可以将此作为一项单独的工作,让它比主要工作更经常地轮询数据库以查找未处理的工作......如有必要。
然而,这引出了一个问题...为什么在php博客/ cms应用程序中使用ruby ??????
答案 2 :(得分:1)
使用exec()运行ruby解释器,为它提供ruby脚本的路径。