2012-08-14 84 views
0

我正在使用專用服務器。 1Gbps端口。我的facebook網站應用程序很慢

有以下代碼(這與Facebook連接)

if($_POST['friend_id'] != 0) { 
     $query = "SELECT uid, first_name, pic, sex FROM user WHERE uid = ".$_POST['friend_id']; 
    } 
    else { 
     $query = "SELECT uid, first_name, pic, sex FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me() order by rand() limit 1)"; 
    } 

    $query = urlencode($query); 
    $fql_query_url = 'https://graph.facebook.com/'. 'fql?q='.$query. '&access_token=' . $access_token; 
    $response = $facebook->api("/fql?q=$query"); 
    $data = $response['data']; 

然後我用uid來獲取用戶的照片。

$img = file_get_contents('https://graph.facebook.com/'.$friend_id.'/picture?type=normal'); 
    $imagesurse1 = $friend_id.uniqid().'.jpg'; 
    file_put_contents($imagesurse1, $img); 

    $img = file_get_contents('https://graph.facebook.com/'.$user_id.'/picture?type=normal'); 
    $imagesurse2 = $user_id.uniqid().'.jpg'; 
    file_put_contents($imagesurse2, $img); 

這些代碼需要10秒到xx秒。 xx達到了60. 可能是什麼問題。

這是一個網站的應用程序。網站沒有「https」

+1

嘗試儘可能使用cURL。它可能會加快您的一些出站連接 - http://stackoverflow.com/questions/555523/file-get-contents-vs-curl-what-has-better-performance – Alfo 2012-08-14 09:40:41

+0

現在嘗試捲曲。但它沒有在服務器上下載照片。我應該犯錯誤。是否可以使用curl下載間接圖像? – Mahesh 2012-08-14 10:12:06

+0

我現在嘗試捲曲。我沒有看到太多的區別。我如何下載10個沒有循環的配置文件圖像? – Mahesh 2012-08-14 16:22:47

回答

1

Facebook通常很慢。你不能緩存你的結果嗎? 你可以一塊一塊地測試你的代碼,所以你可以找出哪個部分是造成麻煩?

+0

我試圖測試代碼。這是不同的號碼。每次秒。 – Mahesh 2012-08-14 09:55:39

+0

太糟糕了。也許你可以緩存個人資料圖片? – Jurgo 2012-08-14 10:00:18

+0

但是不會有人更改他們的個人資料照片和個人資料名稱嗎? – Mahesh 2012-08-14 10:15:03

1

一般來說,你可以說Facebook的API有點慢。你應該對你的頁面進行基準測試,最需要花費的時間。但我敢打賭這是Facebook API調用。

你真的要下載所有的圖片嗎?難道你不能只使用OpenGraph-URL(https://graph.facebook.com/'.$user_id.'/picture?type=normal)作爲HTML圖像標籤嗎?

有沒有可能使此調用與AJAX異步?

+1

是的,我在很多地方使用HTML圖像標籤。在這裏,我真的需要下載該圖像來生成一些圖像。 – Mahesh 2012-08-14 09:54:21

0

從頭開始:調試問題。這很可能只是Facebook API速度很慢,這確實會導致腳本等待所有資源加載完畢,但可以緩存這些結果。另一個問題可能是您的查詢時間太長。嘗試使用XDebug進行基準測試,以查看腳本的緩慢部分,並查看您的查詢是否有正確的索引。例如,可以使用join代替子查詢來優化第二個查詢。

+0

你能發表一個'join'的例子嗎?我從來沒有用過facebook api。我會嘗試。 – Mahesh 2012-08-14 10:17:34

+0

@MaheshKumar它不是特定於Facebook API,它是從另一個更快的查詢中獲得相同結果的不同方式。 – 2012-08-14 10:54:35

+0

**你可以分享任何示例代碼嗎?** – Mahesh 2012-08-14 15:32:29