慢脚本...想要显示iframe

时间:2010-12-26 17:57:44

标签: php iframe

我有一个很慢的PHP脚本,但必须完整填写。在脚本结束时,它会重定向到网址。

我正在考虑在scirpt加载时以某种方式显示iframe,以便访问者不会离开页面。这样做的最佳方式是什么?使用iframe,在脚本完成后无需重定向。

    <?php

require_once('config.php');

if(!$_SESSION['init']){
    die;
}

unset($_SESSION['init']);

require_once('facebook.php');

$data = loaddata();
$facebook = new Facebook(array(
  'appId'  => $fbappid,
  'secret' => $appsecret,
  'cookie' => true,
));

$friendsdate = $facebook->api('/me/friends');
if($friendsdate && $friendsdate['data'] && count($friendsdate['data'])){
    $friends = array();
    foreach($friendsdate['data'] as $f){
        $friends[] = $f['id'];
    }

    sleep(3);

    $session = $facebook->getSession();
    $params = array('name' => $data['name'], 
                     'start_time' => $data['start_time'], 
                     'end_time' => $data['end_time'],
                     'description' => $data['description']);
    if($data['source']){
        $params['source'] = '@'.realpath('image/'.$data['source']);
        $facebook->setFileUploadSupport(true);
    }
    $result = $facebook->api('/me/events', 'POST', $params);

    sleep(4);
    $eid = $result['id'];

    $params = array(
        'access_token' => $facebook-> getAccessToken(),
        'eid' =>$eid,
        'api_key' => $fbappid,
        'uids'=> implode(',', $friends),
        'format'=>'json-strings',
        'personal_message'=> $data['personal_message']
    );

    $url = 'https://api.facebook.com/method/events.invite';
    $facebook->setFileUploadSupport(false);
    $result = $facebook->makeRequest($url, $params);
}

header('Location: '.$data['url']);

2 个答案:

答案 0 :(得分:0)

正确的做法是使用ajax。

主页:
在div中显示某种“工作”消息 在加载时,javascript调用工作页面 在响应时,javascript用工作页面的响应替换“working”div。

工人页面:
你的长篇PHP工作吗? 显示您认为合适的任何内容。

这是一个关于AJAX的教程,可以帮助您入门:http://www.w3schools.com/ajax/default.asp

答案 1 :(得分:0)

是的,它会起作用,facebook api有时变得很慢,所以你可以使用iframe或ajax。

对于iframe - 只需替换最终标题('location:... with javascript redirect

echo "<script>self.parent.location = 'http:// ... ';</script>";

如果您正在使用php会话,那么您必须在脚本顶部的某处执行session_commit,否则iframe可能会锁定主脚本。 AJAX ......不是必需的。