[ dragan.zm @ 11.07.2009. 11:02 ] @
Pozz, imam listu od 9000 web stranica i zelim da provjerim dali je neka od njih neaktivna. Jel ima ko kakvu soluciju da ovo uradim preko php?

Mozda nekako razdvojit da radi 100 po 100 ili nije nikakav problem ukljuciti odma na 9000?
[ kazil @ 11.07.2009. 12:03 ] @
Ne bih ti preporucio PHP za ovo... Mada moze da se odradi. Recimo sa curl-om http://www.php.net/manual/en/book.curl.php

Bolje bi ti bilo da odradis iz konzole, bilo PHP-CLI, bilo curl ili nesto trece. Ako radis iz konzole mozes pustiti svih 9k odjednom, dok ako radis preko PHP-a, moras paziti na koliko je podesen execution time za PHP (obicno je 30 sekundi).
[ Aleksandar Ružičić @ 11.07.2009. 16:14 ] @
u slucaju da nemas curl na serveru get_headers (PHP5) moze da odradi posao isto tako dobro...
[ kazil @ 11.07.2009. 17:03 ] @
Heh, ja nisam ni znao za tu funkciju :) dobar ovaj PHP, ima svasta nesto ugradjeno ;)

Ocigledno da je get_headers dobar za ovo, pored ovoga curl bi bio mali overkill :) samo treba proveriti koji status kod vraca server.
[ dragan.zm @ 12.07.2009. 10:42 ] @
Hmm nisam nasao kako da koristim header.. tek sam pocetnik u php-u. Ali sam nasao skriptu gdje mogu napravit listu adresa stavit ih u bazu i on pinguje i prikaze status servera. medjutim kad pocne da radi sa rekordnima izbaci gresku jer je vrijeme za obradu skripte podeseno na 60 sekundi,

Ja sam planirao da ovo vidim na localhostu, necu ja ovaj skript stavljat na net, samo mi je potreban status tih stranica. Cak ako ko ima i neki program nije vazno. Trebam da uradim statistiku neki. jbg.

[ Aleksandar Ružičić @ 12.07.2009. 15:26 ] @
nisam testirao, ali ovo bi trebalo da radi:
Code:

<?php
  function ping_urls($urls) {
      $ret = array();
      foreach ($urls as $url) {
         list($status) = get_headers($url);
         if (preg_match('|^HTTP/[0-9\.]+\s+(\d+)|i', $status, $matches)) {
            $status = (int)($matches[1]);
            $ret[] = array(
               'url' => $url,
               'status' => $status,
               'live' => $status >= 200 && $status < 300
            );
         }
      }
      return $ret;
  }


  print_r(ping_urls(array('http://www.google.com', 'http://www.elitesecurity.org')));
?>