【问题标题】:php cron job execute javascript as wellphp cron 作业也执行 javascript
【发布时间】:2012-03-04 05:26:15
【问题描述】:

我有一个运行 php 脚本的 cron 作业,但是我需要执行一些 html 和 javascript 才能使实际脚本正常工作。

将 javascript 转换为 php 不是一种选择。

基本上我需要它在每次 cronjob 运行时表现得好像一个人正在查看页面。

编辑: 该脚本使用来自不同站点的 javascript 来加密一些密码,因此它能够登录到我在该站点上的帐户,并且 javascript 是数千行。脚本流程的方式是:将数据发送到网站>获取它发回的数据>使用站点 javascript 更改数据>将 html 表单值设置为 javascript 函数返回的数据值>提交 html 表单以将信息返回给 php>发送数据让我登录。我知道代码非常粗制滥造,但这是我能想到的唯一方法,而不必重写他们用来加密密码到 php 的所有 javascript

【问题讨论】:

  • 究竟是如何执行 HTML 的?您在 cron 工作中特别想完成什么?因为看起来你可能会以错误的方式处理这个问题。向我们提供有关您意图的更多信息,您可能会得到更好的解决方案。
  • 转换成PHP有什么问题?当然,如果 必须 调用 javascript,那么它会在某处调用 PHP 脚本吗?
  • 该脚本使用来自不同站点的 javascript 来加密一些密码,以便它能够登录到我在站点上的帐户,并且 javascript 是数千行。脚本流程的方式是:将数据发送到网站>获取它发回的数据>使用站点 javascript 更改数据>将 html 表单值设置为 javascript 函数返回的数据值>提交 html 表单以将信息返回给 php>发送数据让我登录。我知道代码非常粗制滥造,但这是我能想到的唯一方法,而不必重写他们用来加密密码到 php 的所有 javascript。
  • 我认为这是一个非常有趣的问题。
  • @Max,更新你的问题而不是发表评论。

标签: php javascript cron


【解决方案1】:

cronjobs 总是只在服务器端运行。当没有客户端时 - 你怎么能期望 javascript 真正工作???

无论如何解决方案是:使用 cronjob 运行另一个 php 脚本——它实际上调用了您想要使用 CURL 运行的 php 脚本。 例如file1.php - 您要执行的文件并希望该页面上的 javascript 能够正常工作。

file2.php - 您创建的另一个文件...在此文件中使用 curl 调用 file1.php(确保您提供完整的 http:// 路径,就像您在浏览器中键入一样 - 您可以传递 get/post 之类的值html 表单上的方法也可以)。在您的 cronjob 中 - 调用 file2.php。

确保 curl 可用,并且没有任何防火墙规则阻止 http 调用,即端口 80 调用同一服务器。大多数服务器都满足以上两个条件。

--------- 抱歉,Kristian Antonsen 是对的 - 所以目前不要认为这是完整的答案。但是,我将其保留下来,因为有人可能会对此有所启发-----

【讨论】:

  • -1。 CURL 连接到 Web 服务器,就像您通过 telnet 客户端连接一样。不解析 HTML,也不执行任何 JavaScript。
  • 这行不通,它仍然会在服务器端执行,因此不会执行所有 Javascript。
【解决方案2】:

丘可以尝试Node.JS在服务器上运行JavaScript代码。

【讨论】:

  • 是的,我很确定这是在服务器端运行 Javascript 的唯一方法。
  • 我们究竟是如何通过 cron 运行的?
  • 如果您可以为您的 cron 作业添加一个 shell 脚本或任何其他带有参数的命令,您可以执行类似 /path/to/node path/to/your/script.js 的操作
【解决方案3】:

安装您最喜欢的网络浏览器,然后让 cron 作业以 url 作为参数运行浏览器。

类似

/usr/bin/firefox www.example.com/foo.html

您可能需要等待一分钟左右,然后终止进程,或者确定一个更好的方法来查找它何时完成。

【讨论】:

  • 这是我最初想到的,但我有一个便宜的虚拟主机运行这个脚本,我没有能力安装任何东西。
  • 我会试试的。我打赌你可以。安装浏览器所花费的精力可能比其他解决方案要少。
最近更新 更多