如何重定向用户,然后在数据库中存储有关该用户的数据。
return Redirect::to('http:www.google.com');
// Strore analytics
$ip = $_SERVER['...']
$analytic = new Analytic();
$analytic->ip = $ip;
$analytic->save();
实际上不仅有ip。我需要存储更多的数据,如果我先存储它,然后返回重定向用户需要等到一切都完成。
如何首先重定向然后继续savin数据?
答案 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;
}