php
  • facebook
  • facebook-graph-api
  • 2012-07-16 43 views 5 likes 
    5
    $access_token = $facebook->getAccessToken(); 
    $query = "SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1=me())"; 
    $query = urlencode($query); 
    $fql_query_url = 'https://graph.facebook.com/'. 'fql?q='.$query. '&access_token=' . $access_token; 
    $fql_query_result = file_get_contents($fql_query_url); 
    $fql_query_obj = json_decode($fql_query_result, true); 
    

    Đây là truy vấn. Nó hoạt động nhanh hơn vì tôi có bạn bè giới hạn. Nhưng một số người dùng ứng dụng nói rằng nó rất chậm đối với họ nếu họ có khoảng 2000 người bạn. Họ nói mất 30 giây đến vài phút.Facebook FQL - rất chậm

    Tại sao lại chậm hơn? Có sai trong yêu cầu này không?

    +0

    Điều gì sẽ xảy ra nếu bạn cố gắng thực hiện truy vấn cho hơn 2000 người bạn và tự xem mình? Mọi người đều nằm – zerkms

    +0

    chỉ là tôi đã thử rằng sau khi đăng bài ở đây :) Nó là chậm. Tôi đã kiểm tra thời gian thực hiện của kịch bản ở cấp độ khác nhau. Phải mất nhiều thời gian với facebook để lấy dữ liệu? Có thể mạng hoặc curl của máy chủ chậm không? Làm thế nào để kiểm tra trong trường hợp taht? – Kamini

    +1

    'SELECT uid FROM user WHERE uid IN (...)' - phần này không có ý nghĩa. Toàn bộ truy vấn có thể được giảm xuống thành 'SELECT uid2 FROM friend WHERE uid1 = me()' – zerkms

    Trả lời

    4

    Vâng, điều đầu tiên - miễn là bạn lọc người dùng bằng cách uid và chỉ chọn uid sau đó - truy vấn bên ngoài trông không cần thiết. Vì vậy, các truy vấn cuối cùng có thể được giảm xuống

    SELECT uid2 FROM friend WHERE uid1=me() 
    

    Điều thứ hai: nó là tiện dụng để sử dụng fb php sdk hơn một chút để thực hiện truy vấn FQL, không file_get_contents, như:

    $facebook->api("/fql?q={$fql}"); 
    

    (lấy từ https://stackoverflow.com/a/7827550/251311)

    1

    Nó chậm hơn đơn giản vì có nhiều dữ liệu được thu thập hơn. Bạn bè trên 2000+ khá nhiều cho một truy vấn ...

    Một số thông tin hữu ích có thể tìm thấy tại đây - https://developers.facebook.com/live_status.

    Khác với trạng thái trực tiếp của nền tảng (thực sự hữu ích để biết), cũng có hai biểu đồ hiển thị thời gian phản hồi API trung bình và số lỗi API. Nếu bạn nhận thấy các yêu cầu cực kỳ chậm, hãy truy cập liên kết đó để xem liệu đó có phải là vấn đề toàn hệ thống hay không.

    0

    Theo quan điểm của tôi, FQL là tốt nhưng nên được sử dụng khi API đồ thị thông thường không thể đáp ứng yêu cầu của bạn. Trong trường hợp nhất định nếu yêu cầu duy nhất là lấy ID của bạn bè thì bạn có thể chỉ cần sử dụng mã sau đây.

    FB.api("me/friends?fields=id&limit=3000", function(resp){//process data}); 
    
    +0

    có đúng không? Đó là phương pháp nhanh hơn so với fql? – Kamini

    +0

    @Kamini: Tôi chắc chắn rằng họ rất gần với hiệu suất. Lưu trữ được sử dụng là như nhau, nhưng chỉ có 2 giao diện khác nhau – zerkms

    +0

    Theo kinh nghiệm của tôi với FQL, bạn sẽ tự xử lý. Nhưng Graph API có thể cung cấp cho bạn kết quả xử lý. Tôi có thể sai nhưng đó là kinh nghiệm của tôi với FB API và FQL. –

    Các vấn đề liên quan