短地址生成應用中,要根據長地址生成網頁快照,這個生成時間非瞬發,不可預估。
所以前台方面采用的方案一般為先展示生成的短地址,再定期AJAX輪查網頁快照是否生成完畢。
So,PHP代碼這裡做了如下處理:
復制代碼 代碼如下:
// 這邊服務器采用的是phantomjs 來生成網頁快照
$cd = '/home/emp/phpinstall/phantomjs-1.5.0/bin/phantomjs /home/emp/phpinstall/phantomjs/snap.js "'.$url.'" /home/emp/public_html_demo/cms/'.$thumb.' & ';
try{
@pclose(popen($cd,"r"));
}catch(Exception $e){}
前台Js的ajax腳本:
復制代碼 代碼如下:
_wt = window.setInterval("sys.ajax('?m=shorturl&c=index&a=check_snap','',callback.checkSnap);",200);
回調函數checkSnap等待PHP的check_snap檢測網頁快照 文件是否生成完畢。
收到生成完畢的信息後,清楚_wt這個定時器。
復制代碼 代碼如下:
clearTimeout(_wt);
這樣,PHP和前台AJAX這對JFYF就合作得很歡快了~