我想在没有用户互动的情况下触发网址。我用了
file_get_contents($myurl);
但在我的虚拟主机file_get_contents()
被禁用。怎么做。我不想读取URL的内容。我只想触发URL。此外,我无法使用header()
函数,因为,我将在循环中触发url,因此标题将没有帮助。
答案 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)
好吧,如果您无法使用Curl
或fsockopen
或exec 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
执行此操作。
答案 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');