【问题标题】:Run PHP script from URL, every time when the user refreshes the page每次用户刷新页面时,从 URL 运行 PHP 脚本
【发布时间】:2013-09-24 03:38:18
【问题描述】:

我需要在不使用 CRON 的情况下从另一个站点运行 PHP 脚本,这样每当有人来或刷新页面时都会调用它。

该脚本将执行某种更新我的数据库,它可能需要几十秒,所以我需要运行 PHP 脚本,这样它也不会限制站点访问者,从哪里脚本调用。

但我不想让脚本在每次有人访问或刷新页面时都真正启动,我想限制一分钟,所以在调用脚本之前,我想将某人的当前时间放入 MySQL 数据库(谁是第一个 - 第一个)到达或刷新页面,如果有人只是更新页面,首先将当前时间与上次调用脚本中的数据库进行比较,如果差异较小超过一分钟,所以脚本不会调用,但是如果执行超过一分钟,而数据库再次写入当前时间与最后一次脚本执行。

运行脚本不需要任何响应。 重要的是,它不会影响页面加载用户,它应该被调用。

感谢您的帮助

【问题讨论】:

  • 远程站点上的脚本但更新您的数据库?有点困惑
  • 脚本在同一个服务器上,这意味着它在另一个域的不同文件夹中。喜欢web1/index.php 打电话给web2/script.php
  • 我只会使用 exec,在后台调用它exec("nohup php web2/script.php >/dev/null 2>&1 &");
  • exec(); 不影响原页面加载?它可以消失还是在后台更新将使用第二个脚本更新数据库?
  • 很好 exec ,但 exec 部分将在几分之一秒内结束。然后 web2/script.php 将在后台从 php cli 运行。

标签: php mysql


【解决方案1】:

您可以在页面加载后在后台执行 jQuery AJAX 调用,因此用户不会等待脚本完成加载页面

http://api.jquery.com/jQuery.ajax/

但是,我不认为您想要这样做的方式是正确的。有可能,但我不确定它是否有用。

你能把你的脚本分成不同的任务吗??这样你就可以在加载页面之前完成它们,用户不会注意到任何差异。

【讨论】:

  • 是的,通过 AJAX 调用来做这件事不是办法。他必须另寻出路。
【解决方案2】:

好的,如果 javascript 不是一个选项,您可以对 php forking 进行更多研究。它基本上是 Thread 的 php 版本,但受到更多限制。所以你实际上可以派生一个子 php 进程在后台运行,而主进程仍然在做通常的事情。所以它不会影响您的日常流程。

http://php.net/manual/en/function.pcntl-fork.php

【讨论】:

  • 好吧,我不反对使用JS,虽然我更愿意全部用PHP代码完成,但我关心的只是调用PHP脚本让他执行。但将执行约 45 秒。这意味着在那段时间内,任何用户都可以中断该站点更新的传输,或者离开该站点,此时我不想在脚本执行的后台被中断,如果可能的话?它必须是 CRON 工作的替代品。一个 PHP 脚本,会更新一个表中的大量数据,所以我想在编写 MySQL 触发时间时处理一分钟的延迟。
猜你喜欢
  • 2015-01-03
  • 2016-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-10
  • 1970-01-01
  • 2019-03-25
相关资源
最近更新 更多