504 Ошибка времени ожидания шлюза при получении favicon.ico - PullRequest
0 голосов
/ 29 января 2020

Я нахожусь в общей учетной записи веб-хостинга, и max_execution_time равно 120 по умолчанию. я установил его на set_time_limit (0) и ничего не происходит в phpinfo (). Есть ли способ предотвратить или остановить ошибку тайм-аута шлюза до ее появления? Как остановить процесс прямо перед появлением ошибки шлюза 504. Я выбираю иконки в 50-100 URL. Вот моя строка кода.

<?php 
set_time_limit(0);
error_reporting(E_ERROR | E_PARSE);
include_once('../simplehtmldom_1_9_1/simple_html_dom.php');
function get_domain($url)
    {
      $pieces = parse_url($url);
      $domain = isset($pieces['host']) ? $pieces['host'] : '';
      if (preg_match('/(?P<domain>[a-z0-9][a-z0-9\-]{1,63}\.[a-z\.]{2,6})$/i', $domain, $regs)) {
        return $regs['domain'];
      }
      return false;
    }
function getfavicon($filename) {

      libxml_use_internal_errors(false);
      header('Content-type: text/html; charset=utf-8');
        $file = file_get_contents($filename);       
        $dom = new DOMDocument;
        $fav = array();
        @$dom->loadHTML($file);
        foreach($dom->getElementsByTagName('link') as $lnk) 
        {
            if(($lnk->getAttribute("rel") == "icon")||($lnk->getAttribute("rel") == "shortcut icon"))
              {
                $fav[] = $lnk->getAttribute("href");
              }
        }
        return $fav;
    }
$servername = "localhost:3306";
$username = "topswis7_user";
$password = "J75vsHs8p6";
$database = "topswis7_scrape";
$conn = new mysqli($servername, $username, $password, $database);
   $site = $_POST['favurl'];
   $ids = explode("\n", str_replace("\r", "", $site));
   $chunk = array_chunk($ids, 100);
   $count = count($chunk);
   $ficon = array();
   foreach($ids as $key=>$value){
    $result = parse_url($value);
    $url = $result['scheme']."://".$result['host'];
        // $url = 'http://example.com/';
         $ch  = curl_init($url);
                    // curl_setopt($ch, CURLOPT_URL, $url);
                    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                    curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
                    curl_setopt($ch, CURLOPT_HEADER, true);
                    curl_setopt($ch, CURLOPT_COOKIEJAR, '-');
                    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
                    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
                    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
                    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
        $content  = curl_exec($ch);
        curl_close($ch);
                // $datenbank = "proxy_work.php"; 
                // $datei = fopen($datenbank,"w+");
                // fwrite($datei, $content);  
                // fwrite ($datei,"\r\n");
                // fclose($datei);
        // echo $content;
        $html = getfavicon($url);
        $http = 'http';
        // var_dump($html);
        foreach($html as $key => $value){
          $favinfo = pathinfo($value);
          $check = strpos($value, $http);
          // var_dump($favinfo)."<br >";
          switch($favinfo['extension']){
            case "ico";
              if($check === false){
              $value = $url."".$value;
              $sql = "INSERT INTO tbl_favicon(faviconLink)
                              VALUES ('".$value."')";
              $conn->query($sql);

              }else{
              $sql = "INSERT INTO tbl_favicon(faviconLink)
                              VALUES ('".$value."')";
              $conn->query($sql);
              }
              break 2;
            case "png";
              if($check === false){
              $value = $url."".$value;
              $sql = "INSERT INTO tbl_favicon(faviconLink)
                              VALUES ('".$value."')";
              $conn->query($sql);

              }else{
              $sql = "INSERT INTO tbl_favicon(faviconLink)
                              VALUES ('".$value."')";
              $conn->query($sql);
              }
              break 2;
            case "jpg";
              if($check === false){
              $value = $url."".$value;
              $sql = "INSERT INTO tbl_favicon(faviconLink)
                              VALUES ('".$value."')";
              $conn->query($sql);

              }else{
              $sql = "INSERT INTO tbl_favicon(faviconLink)
                              VALUES ('".$value."')";
              $conn->query($sql);
              }
              break 2;
          }
        }
    }

                  $wordquery = "SELECT * FROM tbl_favicon";
                  $result = $conn->query($wordquery);
                  while($row = $result->fetch_assoc()) {
                    echo $row['faviconLink']."<br />";
                  }
  echo '<br /><a href="../index.php">Back Home</a><br />
            </body></html>';
  // var_dump($ficon);
?>
...