如何使用PHP触发URL?

时间:2009-11-26 16:47:25

标签: php

我想在没有用户互动的情况下触发网址。我用了

file_get_contents($myurl);

但在我的虚拟主机file_get_contents()被禁用。怎么做。我不想读取URL的内容。我只想触发URL。此外,我无法使用header()函数,因为,我将在循环中触发url,因此标题将没有帮助。

7 个答案:

答案 0 :(得分:2)

使用cURL

<?php
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com'); 
curl_setopt($ch, CURLOPT_HEADER, 1); 
curl_setopt($ch, CURLOPT_NOBODY, 1);
curl_exec(); 
curl_close($ch); 
?>

答案 1 :(得分:2)

您可以尝试一些较低级别的套接字调用,以使用fsockopen和相关函数发出简单的HTTP请求。以下是手册中的示例

$fp = fsockopen("www.example.com", 80, $errno, $errstr, 30);
if (!$fp) {
   echo "$errstr ($errno)<br />\n";
} else {
   $out = "GET / HTTP/1.1\r\n";
   $out .= "Host: www.example.com\r\n";
   $out .= "Connection: Close\r\n\r\n";

   fwrite($fp, $out);
   while (!feof($fp)) {
       echo fgets($fp, 128);
   }
   fclose($fp);
}

答案 2 :(得分:2)

其他答案是实际“触发”其他网址的正确方法。但值得一提的是,如果您尝试在没有用户互动的情况下请求这些网址,则应考虑运行Cron Job来实际实现,而不是依赖某人访问您网站上的特定网页。

答案 3 :(得分:2)

好吧,如果您无法使用Curlfsockopenexec wget或任何其他建议来使其在PHP中运行,那么这是一个失败的原因。几乎。如果您不必在脚本执行期间调用URL,则可以让客户端通过向您发送回浏览器的html添加WebBug元素来调用该URL(假设这是您所做的),例如

<img src="http://www.example.com/trigger.php?arg1=foo" width="1" height="1"/>

如果您需要脚本中的响应,则可以使用iframe,但应检查该元素是否属于您正在使用的Doctype。您也可以尝试使用JavaScript,但必须找到一种方法绕过Same Origin Policy大多数浏览器强制执行。

如果仍然没有解决您的问题,请尝试另一个free hosting service或考虑切换到付费托管。如今,您可以获得低于10美元的体面设置。

答案 4 :(得分:0)

如果其他选项都不适合您,您可以使用shell执行此操作。使用wget

shell_exec('wget http://example.com/');

如果未安装wget,您可以使用lynx执行此操作。

http://php.net/manual/en/function.shell-exec.php

答案 5 :(得分:0)

更新:啊,我看到allow_url_fopen已关闭。是的,那么即使get_headers也行不通。那么来自@Gordon的解决方案也是如此。有点讨厌,但没有其他选择 我建议避免像瘟疫这样的主机,这太有限了。


在上一个问题中,我回答了get_headers($url)。就这样。 这绝对是我这样做的方式。它返回标题,以便您能够查看您的请求是否得到了正确处理。

Curl也是一个选项,但我怀疑这是否安装在您的共享主机上,这似乎是限制性的。

答案 6 :(得分:0)

这是一个示例命令,用于将当前文件中的另一个脚本作为单独的进程调用

exec('/usr/bin/php5 /var/www/vhosts/mysite.com/httpdocs/PROCESS/processScript.php');