【问题标题】:Running a url scipt inside php (that contains ajax)在 php 中运行 url 脚本(包含 ajax)
【发布时间】:2015-01-08 15:00:46
【问题描述】:

我有一个通过电子邮件向我的客户发送 url 的站点,一旦他们收到它们就会单击链接,它会在浏览器中加载并完成一些调用 PHP 脚本的 Ajax。此脚本中调用了多个 AJAX 函数。

他们要求这个过程是自动化的,这样他们就不必每次单击链接并等待大约 15 分钟来完成所有 Ajax。

理想情况下,无需重新编码功能并继续使用完全相同的 Ajax,我希望能够自动执行此过程。所以我想运行一个 cron 来加载一个调用这些 URL 的脚本。

这可能吗?

我尝试了几件事,但加载脚本时没有任何反应。当我什么都不说时,我的意思既不是错误,也不是脚本的功能。 (我打开了错误报告)。

例如

cUrl

init_set('display_errors',1);
error_reporting(E_ALL);

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://example.com/myscript.php?varialbe=sample_get_content");
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);

curl_close($ch);

执行

exec('http://example.com/myscript.php');

只需打开脚本...

$contents = file_get_contents('http://example.com/myscript.php?varialbe=sample_get_content');

我知道另一种选择是重建功能,以便我不使用 AJAX,但我不希望这样做,因为这需要时间。

编辑:由于 GET 变量的变化,实际的脚本 URL 本身被称为更改,所以我不能直接通过 cron 运行它(或者我可以吗?)

【问题讨论】:

  • 脚本是否读取像 $_GET 的 $_REQUEST 这样的 URL 参数?
  • 您为什么不简单地将 myscript.php 作为 CGI 运行 - 即直接通过 cron 调用它。只需添加 #!/path/to/phpcgibin -q 作为脚本的第一行
  • @KevIn​​Sol,实际上我会更新我的问题以澄清这一点,原因是脚本的 url 每次都不同(不同的 GET 变量),(除非它仍然可以以某种方式执行?)
  • 好的,实际上我要补充的是,如果 myscript.php 进行 ajax 调用,它需要由浏览器运行,因为它是进行 ajax cal 的浏览器,也许这是你的问题?
  • Web 服务器和 AJAX 是完全不同的东西。您不能从 PHP 创建 XMLHttpRequest 对象。

标签: php ajax curl cron


【解决方案1】:

建议的方法。

在发送链接的脚本中,而不是发送带有唯一 GET 数据的链接,让它这样做:

exec("./myscript.php $param_1 $param_2");

在 myscript.php 中替换:

$param_1 = $_GET['param_1'];
$param_2 = $_GET['param_2'];

$param_1 = $argv[1];
$param_2 = $argv[2];

http://php.net/manual/en/reserved.variables.argv.php

同时添加

#!/path/to/phpcgibin -q

<? 之前的 myscript.php 并确保上传为 ascii

【讨论】:

  • 谢谢,但是没有浏览器的 ajax 问题呢?
  • 我认为您将不得不重新考虑以免除 ajax,这是一件好事,因为至少您正在通过网络删除调用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多