我有以下文件:
utils.php中其中arrayForJSON
定義
getLikes.php:的var_dump似乎導致循環/試驗,直到超時
include '../utils.php';
if($user_id) {
try {
if(is_null($likes))
$likes = idx($facebook->api('/me/likes'), 'data', array());
if ($likes) {
$arrayForJSON['likes']=$likes;
}
}
catch(FacebookApiException $e){
echo error_log($e);
}
var_dump($arrayForJSON);
}
else
echo "User not logged in";
導致顯示內容$arrayForJSON
。
我現在有一個具有以下內容的另一個文件: learning_globals.php
<?php
include 'utils.php';
var_dump($GLOBALS['arrayForJSON']);
?>
現在,如果我運行這個文件,後運行getLikes
,它運行直至超時。如果我運行它之前,則返回空。如果我按相反順序運行文件,結果相同。
我應該怎麼做..?我目前正在學習PHP,並且有點卡住了。
編輯:不是dupicate -
建議的答案是不適合的,並於question-似乎問題並不有什麼做與Facebook的API是不是一個很好的答案。另一方面,這裏的區別在於,即使我先打電話learning_globals.php它顯示null和調用getLikes.php結果再次嘗試,直到超時。
我現在希望一切都清楚了
utils.php中
require_once('sdk/src/facebook.php');
require_once("AppInfo.php");
/**
* @return the value at $index in $array or $default if $index is not set.
*/
function idx(array $array, $key, $default = null) {
return array_key_exists($key, $array) ? $array[$key] : $default;
}
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past
function he($str) {
return htmlentities($str, ENT_QUOTES, "UTF-8");
}
$facebook = new Facebook(array(
'appId' => AppInfo::appID(),
'secret' => AppInfo::appSecret(),
'sharedSession' => true,
'trustForwarded' => true,
'file_upload' =>true
));
$user_id = $facebook->getUser();
$app_info = $facebook->api('/'. AppInfo::appID());
$app_name = idx($app_info, 'name', '');
if($user_id)
{
$logoutUrl =$facebook->getLogoutUrl();
}
else
{
$loginUrl=$facebook->getLoginUrl();
}
if ($user_id) {
try {
$permissions = $facebook->api('/me/permissions');
$user_profile = $facebook->api('/me');
} catch (FacebookApiException $e) {
// If the call fails we check if we still have a user. The user will be
// cleared if the error is because of an invalid accesstoken
if (!$facebook->getUser()) {
header('Location: '. AppInfo::getUrl($_SERVER['REQUEST_URI']));
exit();
}
}
}
$token=$facebook->getAccessToken();
$arrayForJSON = array();
function getUpdatedTime()
{
global $facebook,$user_id,$arrayForJSON;
if($user_id) {
try {
$updated_time= idx($facebook->api('me/updated_time'), 'data', array());
if($updated_time) {
$arrayForJSON['updated_time']=$updated_time;
}
}
catch(FacebookApiException $e){
error_log($e);
}
}
}
的可能重複的[PHP功能進入在一定條件下的無限循環(http://stackoverflow.com/questions/16225700/php-function-goes-into-an-infinite-loop-under-certain-conditions ) – pilsetnieks 2013-05-02 17:56:39
@pilsetnieks正如你所看到的,這也是我的問題,沒有一個合適的答案。這裏的區別在於,如果我在writeJSON之後調用getLikes,它就起作用了。在這裏,它不起作用。 – 2013-05-02 18:01:29
我不知道var_dump可以使用喜歡,我雖然var_dump wa主要用於調試。 – Viscocent 2013-05-03 13:37:27