Laravel重定向并继续执行脚本

时间:2014-05-19 10:21:11

标签: php redirect laravel

如何重定向用户,然后在数据库中存储有关该用户的数据。

return Redirect::to('http:www.google.com');
// Strore analytics
$ip = $_SERVER['...']
$analytic = new Analytic();
$analytic->ip = $ip;
$analytic->save();

实际上不仅有ip。我需要存储更多的数据,如果我先存储它,然后返回重定向用户需要等到一切都完成。

如何首先重定向然后继续savin数据?

2 个答案:

答案 0 :(得分:1)

基本上你不能这样做。将用户重定向到其他位置后,该行之后的代码将无法执行。您应首先保存数据然后重定向,并且不应花费太多时间(IMO)。

但是...

如果您想先重定向用户(不保存数据),则可以使用Laravel的queue。你可以创建一个这样的类:

class SaveData {
    public function fire($job, $data)
    {
        //
    }

}

然后你可以使用这样的类:

Queue::push('SaveData', array('ip' => $ip, 'otherField' => 'value'));
return Redirect::to('someurl');

有几个可用的驱动程序,您需要在app/config/queue.php中设置配置,因此请阅读有关queues的更多信息。这只是关于queue的基本概念,请阅读Laravel网站上的更多信息。

答案 1 :(得分:0)

您使用Sentry处理用户会话吗?

https://cartalyst.com/manual/sentry

http://bundles.laravel.com/bundle/sentry

例如

$user = Sentry::getUser();

    if ( isset($user) )
    {
      $id = Helpers::loggedInUser()->id;
     $ip = Helpers::loggedInUser()->ip;

     }
相关问题