Php kullanarak bir URL tetiklemek nasıl?

8 Cevap

Ben bir kullanıcı etkileşimi olmadan URL tetiklemek istiyorum. Ben kullanılan

file_get_contents($myurl);

Ama benim host içinde file_get_contents() devre dışı bırakılır. bunu nasıl. Ben URL içeriğini okumak istemiyorum. Ben sadece URL tetiklemek istiyorum. Ayrıca ben, header() işlevini kullanamazsınız Im bir döngüde url tetiklemek için gidiyor, bu yüzden başlık yararlı olmayacaktır, çünkü.

8 Cevap

Kullan 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); 
?>

Bazı alt düzey soket fsockopen ve ilgili fonksiyonları ile basit bir HTTP isteği yapmak için çağırır deneyebilirsiniz. Burada manuel bir örnek

$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);
}

Diğer cevaplar aslında "tetikleyici" diğer URL'leri gitmek için doğru yoldur. Ama size "kullanıcı etkileşimi olmadan" bu URL'leri istemek için çalışıyoruz eğer çalışan düşünmelisiniz ki kayda değer bir Cron Job aslında oldukça üzerinde belirli bir sayfaya erişmek için birisi güvenmek yerine, bunun gerçekleşmesi için sizin web sitesi.

Eğer Curl veya fsockopen veya exec wget ya da PHP çalışmak için diğer önerilerden hiçbirini kullanamazsınız eğer Eh, bu bir kayıp nedenidir. Neredeyse. Eğer komut dosyası yürütme sırasında denilen URL olması Yüklü değilse, istemci geri tarayıcıya göndermek html bir WebBug elemanı, örneğin, (bu ne olduğunu varsayarak) ekleyerek url diyelim verebilir

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

Eğer komut yanıtı gerekiyorsa o eleman kullandığınız doctype parçası olup olmadığını kontrol etmelisiniz olsa, sen, bir iframe kullanabilirsiniz. Ayrıca JavaScript ile deneyin, ama Same Origin Policy tarayıcıların çoğu zorlamak atlamak için bir yol bulmak olabilir.

O hala problem çözme değilse, başka bir free hosting service deneyin veya ücretli hosting geçiş düşünün. Günümüzde on altındaki dolar için iyi bir kurulum alabilirsiniz.

Diğer seçeneklerden hiçbiri sizin için çalışıyorsanız, kabuk kullanarak bunu yapmak mümkün olabilir. Kullanma wget,

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

wget yüklü değilse, siz lynx ile bunu yapmak mümkün olabilir.

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

update: ah, I see allow_url_fopen is off. Yeah, then even get_headers won't work. Then the solution from @Gordon is the way too go. A bit nasty, but there is no other option.
I would recommend to avoid such hosters like the plague, this is too limiting.


In your last question I answered get_headers($url). Thats all. This is definitively the way I would do it. It returns the headers, so that you are able to see if your request was handled properly.

Curl da bir seçenektir ama bu kısıtlayıcı gibi görünüyor paylaşılan barındırma, yüklü ise şüpheliyim.

@ Rajasekar - Ben @ wadesworld gelen öneri yankı istiyorum. Para üreten bir site için olmasa bile, özgür olmayan bir web barındırma ol. Hosting so ucuz bu gündür. I LEB büyük bir sağlayıcı bulundu ve (farkında olması ancak bu ucuz korkunç anlamına gelebilir - vb alıcı dikkat) orada topraklarına göre filtreleme yapabilirsiniz.

Burada ayrı bir işlem olarak geçerli dosyanın başka bir komut aramak için örnek bir komut

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