中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁 > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > 基于PHP的cURL快速入門
Net設(shè)計模式實例之適配器模式 回到列表 Visual Studio調(diào)試中的斷點技巧
 基于PHP的cURL快速入門

作者:jyyjch 時間: 2010-01-18 文檔類型:翻譯 來自:藍色理想

第 1 頁 基于PHP的cURL快速入門 [1]
第 2 頁 基于PHP的cURL快速入門 [2]
第 3 頁 基于PHP的cURL快速入門 [3]
第 4 頁 基于PHP的cURL快速入門 [4]
第 5 頁 基于PHP的cURL快速入門 [5]
第 6 頁 基于PHP的cURL快速入門 [6]

cURL批處理(multi cURL)

cURL還有一個高級特性——批處理句柄(handle)。這一特性允許你同時或異步地打開多個URL連接。

下面是來自來自php.net的示例代碼:

// 創(chuàng)建兩個cURL資源
$ch1 = curl_init();
$ch2 = curl_init();
// 指定URL和適當(dāng)?shù)膮?shù)
curl_setopt($ch1, CURLOPT_URL, "curl_setopt($ch1, CURLOPT_HEADER, 0);
curl_setopt($ch2, CURLOPT_URL, "
curl_setopt($ch2, CURLOPT_HEADER, 0);
// 創(chuàng)建cURL批處理句柄
$mh = curl_multi_init();
// 加上前面兩個資源句柄
curl_multi_add_handle($mh,$ch1);
curl_multi_add_handle($mh,$ch2);
// 預(yù)定義一個狀態(tài)變量
$active = null;
// 執(zhí)行批處理
do {
    $mrc = curl_multi_exec($mh, $active);
} while ($mrc == CURLM_CALL_MULTI_PERFORM);
while ($active && $mrc == CURLM_OK) {
    if (curl_multi_select($mh) != -1) {
        do {
            $mrc = curl_multi_exec($mh, $active);
        } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    }
}
// 關(guān)閉各個句柄
curl_multi_remove_handle($mh, $ch1);
curl_multi_remove_handle($mh, $ch2);
curl_multi_close($mh);

這里要做的就是打開多個cURL句柄并指派給一個批處理句柄。然后你就只需在一個while循環(huán)里等它執(zhí)行完畢。

這個示例中有兩個主要循環(huán)。第一個 do-while 循環(huán)重復(fù)調(diào)用 curl_multi_exec() 。這個函數(shù)是無隔斷(non-blocking)的,但會盡可能少地執(zhí)行。它返回一個狀態(tài)值,只要這個值等于常量 CURLM_CALL_MULTI_PERFORM ,就代表還有一些刻不容緩的工作要做(例如,把對應(yīng)URL的http頭信息發(fā)送出去)。也就是說,我們需要不斷調(diào)用該函數(shù),直到返回值發(fā)生改變。

而接下來的 while 循環(huán),只在 $active 變量為 true 時繼續(xù)。這一變量之前作為第二個參數(shù)傳給了 curl_multi_exec() ,代表只要批處理句柄中是否還有活動連接。接著,我們調(diào)用 curl_multi_select() ,在活動連接(例如接受服務(wù)器響應(yīng))出現(xiàn)之前,它都是被“屏蔽”的。這個函數(shù)成功執(zhí)行后,我們又會進入另一個 do-while 循環(huán),繼續(xù)下一條URL。

還是來看一看怎么把這一功能用到實處吧:

WordPress 連接檢查器

想象一下你有一個文章數(shù)目龐大的博客,這些文章中包含了大量外部網(wǎng)站鏈接。一段時間之后,因為這樣那樣的原因,這些鏈接中相當(dāng)數(shù)量都失效了。要么是被和諧了,要么是整個站點都被功夫網(wǎng)了...

我們下面建立一個腳本,分析所有這些鏈接,找出打不開或者404的網(wǎng)站/網(wǎng)頁,并生成一個報告。

請注意,以下并不是一個真正可用的WordPress插件,僅僅是一段獨立功能的腳本而已,僅供演示,謝謝。

好,開始吧。首先,從數(shù)據(jù)庫中讀取所有這些鏈接:

// CONFIG
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'wordpress';
$excluded_domains = array(
    'localhost', 'www.mydomain.com');
$max_connections = 10;
// 初始化一些變量
$url_list = array();
$working_urls = array();
$dead_urls = array();
$not_found_urls = array();
$active = null;
// 連到 MySQL
if (!mysql_connect($db_host, $db_user, $db_pass)) {
    die('Could not connect: ' . mysql_error());
}
if (!mysql_select_db($db_name)) {
    die('Could not select db: ' . mysql_error());
}
// 找出所有含有鏈接的文章
$q = "SELECT post_content FROM wp_posts
    WHERE post_content LIKE '%href=%'
    AND post_status = 'publish'
    AND post_type = 'post'";
$r = mysql_query($q) or die(mysql_error());
while ($d = mysql_fetch_assoc($r)) {
    // 用正則匹配鏈接
    if (preg_match_all("!href=\"(.*?)\"!", $d['post_content'], $matches)) {
        foreach ($matches[1] as $url) {
            // exclude some domains
            $tmp = parse_url($url);
            if (in_array($tmp['host'], $excluded_domains)) {
                continue;
            }
            // store the url
            $url_list []= $url;
        }
    }
}
// 移除重復(fù)鏈接
$url_list = array_values(array_unique($url_list));
if (!$url_list) {
    die('No URL to check');
}

我們首先配置好數(shù)據(jù)庫,一系列要排除的域名($excluded_domains),以及最大并發(fā)連接數(shù)($max_connections)。然后,連接數(shù)據(jù)庫,獲取文章和包含的鏈接,把它們收集到一個數(shù)組中($url_list)。

出處:藍色理想
責(zé)任編輯:moby

上一頁 基于PHP的cURL快速入門 [3] 下一頁 基于PHP的cURL快速入門 [5]

◎進入論壇網(wǎng)絡(luò)編程版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
ASP.NET 與 PHP 正面交鋒
PHP與ASP.NET優(yōu)劣勢分析
ASP.NET與PHP速度對比
PHP中插件機制的一種實現(xiàn)方案
PHP之TEA算法實現(xiàn)
作者文章
給JavaScript新手的24條實用建議
拒絕臆想,讓我們腳踏實地做設(shè)計
十個簡單好用的設(shè)計技巧
PS動作功能制作規(guī)范化的截屏圖
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計比賽 網(wǎng)頁制作 web標(biāo)準(zhǔn) 用戶體驗 UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點最新 站點最新列表
周大!熬•自然”設(shè)計大賽開啟
國際體驗設(shè)計大會7月將在京舉行
中國國防科技信息中心標(biāo)志征集
云計算如何讓安全問題可控
云計算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機會
阿里行云
云手機年終巨獻,送禮標(biāo)配299起
阿里巴巴CTO王堅的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機主題設(shè)計大賽
欄目最新 欄目最新列表
淺談JavaScript編程語言的編碼規(guī)范
如何在illustrator中繪制臺歷
Ps簡單繪制一個可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡單的作品展示頁面
CSS定位機制之一:普通流
25個最佳最閃亮的Eclipse開發(fā)項目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁 首頁 前頁 后頁 尾頁 頁次:4/61個記錄/頁 轉(zhuǎn)到 頁 共6個記錄

藍色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點的原創(chuàng)文章,但原作者和來自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請不要盜鏈到本站,且不準(zhǔn)打上各自站點的水印,亦不能抹去我站點水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計作品,如需使用,請與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請與我們聯(lián)系,我們將立即刪除修改。

您的評論
用戶名:  口令:
說明:輸入正確的用戶名和密碼才能參與評論。如果您不是本站會員,你可以注冊 為本站會員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯誤,請用報告錯誤,以利文檔及時修改。
不評分 1 2 3 4 5
注意:請不要在評論中含與內(nèi)容無關(guān)的廣告鏈接,違者封ID
請您注意:
·不良評論請用報告管理員,以利管理員及時刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國的各項有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評論管理人員有權(quán)保留或刪除其管轄評論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評論文檔 | 報告錯誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計》
犀利開發(fā)—jQuery內(nèi)核詳解與實踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2