首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby/RoR和许多子进程

Ruby/RoR和许多子进程
EN

Stack Overflow用户
提问于 2009-11-18 15:08:46
回答 2查看 221关注 0票数 0

我正在尝试构建一个免费的web应用程序,使用ruby/rails,它应该能够通过各种移动运营商的在线形式发送sms。(如这一个 (俄文))。

所以,我需要

  • 等待用户,谁想发送短信通过我的网站。
  • 建立与运营商网站的连接。可能是用机械化。
  • 检索captcha
  • 向用户显示captcha
  • 允许用户输入消息和captcha
  • 在运营商网站上提交表格(附信息、卡、电话号码)

在所有这些过程中,到操作员网站的连接应该是活动的(否则captcha会改变)。据我所知,每次发送sms时,我都需要创建一个(子)进程。请您建议在rails\ruby中处理这个问题的最佳方法是什么?

我对网络开发还是很陌生的.我应该使用线程吗?叉子?波芬?利用PTY?一些外部宝石?我应该如何与我的过程沟通?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-18 15:26:09

假设操作员的网站没有什么特别之处,不,您不需要在整个过程中保持连接活动。一般来说,网页上的表单是这样工作的:访问URL,web浏览器下载带有表单的页面。在您的示例中,它还将有一个标记或类似的标记来显示CAPTCHA。一旦浏览器下载了该页面,连接就会被切断。填写表单并单击Submit后,web浏览器打开到服务器的新连接并发送数据,服务器发送其响应(单击Submit后显示的任何页面)。

你的程序所要做的就是模仿这种经历。因此: 1)下载带有表单的页面。刮掉表单字段(确保不会漏掉任何隐藏字段--使用CAPTCHA,可能会有一些)和CAPTCHA。2)构建一个显示用户的页面,其中包括CAPTCHA和一个包含他们需要填写的所有字段的表单。如果原始表单中有隐藏字段,请确保还包括它们的值(作为表单中的隐藏字段),因为当用户提交表单时,您将需要它们。3)然后,当用户提交表单时,将数据(包括隐藏的值和用户为CAPTCHA输入的内容)发送给操作员。4)最后,检查操作员是否表示成功,并构建一个页面来告诉用户。

如果您在Rails中这样做,您的控制器中可能有两种方法:一种是名为“show”(上面步骤1和2),它将从操作员的站点刮取CAPTCHA和其他信息,并显示您的表单视图,另一种方法称为“send”(上面的步骤3和4),它将接收他们的数据并将其发送到操作员的网站,收集响应,并告诉用户表单是否成功。

备注:,您需要先阅读运营商的服务条款,然后再考虑这些内容。我相当肯定,这类事情将违背他们的TOSes,如果他们注意到您的服务器发送大量请求,他们会很快阻止您。

票数 2
EN

Stack Overflow用户

发布于 2009-11-18 16:34:33

要回答您的另一个问题,您可以使用DRb或background_job (又名BJ)在后台实际完成发送,这样在用户提交captcha之后,他们就不必等待响应。或者,您可以将其包装在ajax中,让DRb/BJ进程在sms发送发生时通知您,这样您就可以将成功或任何问题通知用户。

通常,在Ruby中打开线程是要避免的,因为有很多伟大的宝石可以满足我们的需要。并不是说您不应该使用线程,只是在大多数情况下,它可能已经做得很好了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1756658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档