2014-05-04 37 views
0

我正在使用PHP和MySQL以及PHP簡單的HTML DOM解析器。我必須解析網站的頁面並獲取一些內容。爲此,我將網站主頁作爲初始URL並獲取該頁面上可用的所有錨定標記。解析一個網站,獲取所有鏈接並保存到mysql數據庫

我必須過濾這些網址,因爲每個鏈接對我來說都沒有用處。所以,我用正則表達式。必需的鏈接必須保存到我的MySQL數據庫。

我的問題是:

  1. 如果我提取的所有鏈接(約1,20,000鏈接)並嘗試保存到MySQL數據庫,我收到以下錯誤: 致命錯誤:最大的執行在第12行的C:\ xampp \ htdocs \ search-engine \ index.php中超過60秒的時間

  2. 我無法將數據存儲到數據庫中。

  3. 我無法過濾鏈接。

    include('mysql_connection.php'); 
    include('simplehtmldom_1_5/simple_html_dom.php'); 
    $website_name="xyz.html/"; 
    
    $html=file_get_html("xyz.html/"); 
    foreach($html->find('div') as $div) 
    { 
        foreach($html->find('a') as $a_burrp) 
        { 
        echo $a1 = $a_burrp->href . '<br>'; 
         if(preg_match('/.+?event.+/',$a1, $a_match)) 
         { 
          mysql_query("INSERT INTO scrap_urls(url, website_name, date_added) VALUES(`$a1`, `$website_name`, now())"; 
         } 
    
        } 
    } 
    
+1

mysql已棄用,請使用mysqli或PDO。您的代碼容易受到SQL注入的影響。你的「最大執行時間」問題以前已經被問過很多次了。 –

+0

這是由於我們作爲開發人員對服務器信息的瞭解有限,simpleHTMLDOM解析器對其競爭對手來說很簡單,但速度很慢,但由於其可伸縮性和可用性,所以它被廣泛使用。我支持@wachme答案PHP很慢,需要更改 –

+0

大家好,感謝您的幫助。但是,每個人都只能解決我的第一個問題,而不是第二個和最後的問題我不知道在過濾和存儲數據到db中到底發生了什麼問題。 PLZ解決這個問題。我會很感激! – user2902000

回答

2

你正在接受致命錯誤:因爲在PHP一個配置限制爲60秒的最大執行時間。您可以通過在你的代碼的頂部添加這樣一行放大這個數字:

set_time_limit(320); 

更多信息:http://www.php.net/manual/en/function.set-time-limit.php

你也可以放大數在php.ini文件中XAMPP

1

其實PHP並不是最好的解決方案。 PHP腳本旨在執行快速操作並返回響應。在你的情況下,腳本可能會運行很長時間。雖然您可以增加max_execution_time,但我鼓勵您使用另一種比標準PHP更靈活的技術,如Python或JavaScript(Node.js)

0

我也/通常使用需要「某些時間「完成。

我始終運行這些腳本或者作爲一個cronjob,或直接使用shell或命令行:

PHP的script.php參數

雖然我沒有介意執行。 有一個目的,php_execution_time通常設置爲< = 60secs。

問候。

相關問題