使用PinPHP有一段時間了,利用PinPHP在Sae上搭了個環境,運營一個月左右的《時尚美匯》,所以最近也一直在研究這套程序,順便做些二次開發,加入些自己的想法。例如之前寫過的博文:加入人人網帳號登錄(淘寶登錄其實也做了,只是在淘寶應用中心上用)、修改PinPHP采集。
好吧,今天來說說關於PinPHP後台批量采集的功能二次開發修改實現,本人一開始接解pinphp,使用的是2.1測試版,
到現在官方已經發布了2.2版,但遺憾的是,大家一值期待的批量采集功能並沒有如願發布,所以本人自己嘗試去修改修改,
其實程序早在半個月前就寫好了,只是自己在用,一方面工作有點忙,另一方面自己測試一段時間,順便完善一下。
實現原現很簡單,主要是修改采集界面,加了幾個checkbox,用於傳遞要采集的id、關鍵字等。
1、修改:admin\Tpl\default\items_collect\collect.html頁面,28行左右。
Copy to Clipboard引用的內容:[www.bkjia.com] <input type="checkbox" id="subcb_{$sval.id}" class="cb_{$val.id} subcb" name="cate[]" value="{$sval.id}"/>官方應該是有嘗試去做批量采集,因為此頁面上有關於批量采集的代碼未完成,只是注釋了。
2、然後在\admin\Lib\Action\items_collectAction.class.php上增加了一個函數,以及略修改原采集函數
Copy to Clipboard引用的內容:[www.bkjia.com] function ajaxCollect(){這一句有一些信息要注意一下
Copy to Clipboard引用的內容:[www.bkjia.com] $arrUrls[]='http://mmlike.sinaapp.com/mlike_admin.php?a=taobao_collect_jump&m=items_collect&pages=1&cate_id='.$v.'&keywords='.$subname[$k];page=1是采集一頁,每頁40個商品,如果需要一次采集更多商品,可自行修改,但不建議填太大的值,一方面采集時間長,另一方面,淘寶api請求可能會太頻繁。
修改public function collect()函數,前半部分的if改成
Copy to Clipboard引用的內容:[www.bkjia.com] if(isset($_REQUEST['dosubmit'])){3、在模板裡增加一個,\admin\Tpl\default\items_collect\ajaxCollect.html
Copy to Clipboard引用的內容:[www.bkjia.com] <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">了解php和js的朋友應該看懂,將組裝好的采集url,以json形式放在js裡,利用setInterval定時器去定時執行ajax請求,遍歷所有的url
直到完成。一開始用setInterval而不是直接for遍歷是擔心分類多時,太頻繁請求淘寶api會導致部份采集不成功。
上面的ajax使用異步請求,之前嘗試使用同步去獲取,是為了方便捕獲到那個采集成功,哪個不成功,以便手動去采集,
測試了一段時間,雖然效果是達到了,但由於分類太多一次采集的時候,浏覽器會卡,而已采集總時間也變長漫長。現還是使用
異步,不卡,縮短采集時間,雖然也可以實現失敗捕足,但要修改更多的代碼,這個有時間有研究。現在的效果如下
用%比顯示進度,最後會顯示完成度和有多少個失敗,至於失敗的再采集一次,又或者自己去檢查哪個未采集手動采集。
這個修改後,原采集功能也可正常使用。
重申一下,本人使用的是pinphp2.1測試版,其他版本若要修改,可作為參考,以下是修改文件的打包,不建議直接覆蓋,最好
對比一下代碼,如要覆蓋,請先備份原文件,以便恢復。
點擊下載:pinphp批量采集
教程來源:http://meego123.net/?post=140