2014-04-11 73 views
0

我使用此代碼在Instagram API上登錄,但在某些服務器上,此代碼正確運行,但在其他服務器上我無法獲取instagram數據。誰知道爲什麼?如何從「某些」服務器上的instagram獲取數據

<?php 

require 'instagram.class.php'; 
require 'instagram.config.php'; 

// Receive OAuth code parameter 
$code = $_GET['code']; 

// Check whether the user has granted access 
if (true === isset($code)) { 

// Receive OAuth token object 
$data = $instagram->getOAuthToken($code); 

if(empty($data->user->username)) 
{ 
echo "1"; 

} 
else 
{ 
    session_start(); 
    $_SESSION['userdetails']=$data; 
    echo $user=$data->user->username; 
echo $fullname=$data->user->full_name; 
echo $bio=$data->user->bio; 
echo $website=$data->user->website; 
echo $id=$data->user->id; 
echo $token=$data->access_token; 


} 
} 
else 
{ 
// Check whether an error occurred 
if (true === isset($_GET['error'])) 
{ 
    echo 'An error occurred: '.$_GET['error_description']; 
} 

} 

?> 
+0

您可能需要啓用粘性會話[負載均衡],我使用memcache作爲我的session.save_handler和php共享相同的會話 –

回答

1

如果您在服務器上創建會話,則無法在其他服務器上獲取該會話。你需要使用粘性會話。我的建議是在你的一臺服務器上安裝memcache。你可以看到如何安裝here。安裝後,假設您的memcache服務器路徑爲localhost:11211。你可以配置你的php,說你的會話保存在這個memcache服務器而不是每個服務器的內存。你需要在你php.ini以下簡單的conf,

session.save_handler = memcache 
session.save_path = "tcp://localhost:11211" 

當你設置任何會話,它將這個內存緩存服務器上創建的,你可以從任何服務器得到它。這個設置適用於所有服務器。您需要爲所有服務器中的session.save_path提供服務器名稱。因爲只有一個memcache服務器

+0

好的答案 - 很好的解決方案。 Memcache +1 –