2009-11-26 30 views
2

我想在没有用户交互的情况下触发一个URL。我用如何使用php触发URL?

file_get_contents($myurl); 

但在我的虚拟主机提供商file_get_contents()被禁用。怎么做。我不想读取URL的内容。我只是想触发网址。另外我不能使用header()函数,因为,我要在一个循环中触发url,所以头文件不会有帮助。

+4

通常一个简单的电子邮件,要求的东西启用/安装足以让您的虚拟主机来做到这一点。但是,如果没有,也许是时候切换主机:) – philfreo

回答

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); 
?> 
+0

为此,我必须包括或安装任何东西? – Rajasekar

+0

是的,这是PHP的扩展,它必须安装并启用 –

+0

你需要安装cURL(请参阅http://us.php.net/manual/en/curl.requirements.php)。 –

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); 
} 
+0

的fsockopen()也由我的虚拟主机提供商禁用 – Rajasekar

+1

嗯,我希望把它看作也许你的主机只是不希望你这样做的迹象。找到另一个主机! –

+0

任何免费的PHP托管网站你知道吗? – Rajasekar

2

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

+1

我想根据条件触发URL,不是按时间间隔 – Rajasekar

2

好吧,如果你不能使用Curlfsockopenexec wget或任何其他建议,使其从PHP的工作,这是一个失败的事业。几乎。如果您不必在脚本执行过程中调用URL,您可以让客户通过向发送给浏览器的HTML添加WebBug元素(假设这是您所做的)来调用url。

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

如果你需要从脚本的响应,你可以使用一个iframe,但你应该检查,如果该元素是您正在使用的文档类型的一部分。您也可以尝试通过JavaScript,但必须找到一种方法来绕过大多数浏览器强制执行的Same Origin Policy

如果这仍然不能解决您的问题,请尝试其他free hosting service或考虑切换到付费托管。你现在可以得到一个不到10美元的体面安装。

+0

由于'allow_url_fopen'为Off,这确实是最后一招。接得好。 –

0

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


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

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

0

@Rajasekar - 我会回应@wadesworld的建议。订阅非免费的虚拟主机,即使它不是为了赚钱的网站。主机是所以这几天便宜。我在LEB找到了一家优秀的供应商,您可以按照地区过滤(但请注意,便宜可能意味着可怕 - 买方要小心,等等)。

0

下面是一个简单的命令来调用当前文件另一个脚本作为单独的进程

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