如何在开始时执行功能? Facebook PHP-SDK

时间:2013-06-08 20:51:08

标签: php mysql facebook session sdk

我创建了一个Facebook应用程序,它是一个基于PHP和一些mySQL功能的网站。

有一个消耗大量时间的mysql函数,我希望此函数仅在用户登录后的会话开始时执行。

我目前的次优解决方案是,在用户启动我的应用程序之后,我检查sql数据库是否他今天已经启动了应用程序,如果是这样,那么我跳过耗时的功能(这会更好如果我每次用户启动应用程序时检查它

(如果date()> datelastlogin然后做某事...)

你还有其他优雅的想法吗?

编辑: if($ _SESSION ['firstLogon'] = true)的解决方案也不起作用:

这是我的代码:

    <?php
include_once($_SERVER['DOCUMENT_ROOT']."/config/config.php");
include_once($_SERVER['DOCUMENT_ROOT']."/config/facebook_config.php");
require_once($_SERVER['DOCUMENT_ROOT']."/script/facebook.php");
include($_SERVER['DOCUMENT_ROOT']."/config/connection.php");




function friends($userid){
    global $dbcon;
    //that is the time consuming function
    $query=.....

}

$facebook = new Facebook($config);
    $user_id = $facebook->getUser();
    if($user_id) {
        try {
            $user_profile = $facebook->api('/me','GET');



                if (!isset($_SESSION['firstLogon']))

                {
                echo "firstlogon";
                friends($user_id);
                }

        } 
         catch(FacebookApiException $e) {

        $login_url = $facebook->getLoginUrl( array(
                       'scope' => 'publish_stream'
                       )); 
        echo 'Please <a href="' . $login_url . '">login.</a>';
        error_log($e->getType());
        error_log($e->getMessage());
      }   
    } else {


      $login_url = $facebook->getLoginUrl( array( 'scope' => 'publish_stream' ) );
      echo 'Please <a href="' . $login_url . '">login.</a>';

    } 


?>

1 个答案:

答案 0 :(得分:0)

使用$ _SESSION不是一个选项吗?我会标记一个会话变量:

$_SESSION['firstLogon'] = true;

然后您可以在每次运行时检查该变量。当它没有设置(或不等于true)时,你可以运行你的mysql调用。

这样您就不需要额外的数据库活动,只需检查会话变量即可。