Symfony 2.0会话间通信

时间:2013-02-22 09:11:23

标签: php session post symfony communication

如何让一个会话刷新另一个会话?假设我们有智能手机,服务器和笔记本电脑。笔记本电脑与服务器有当前会话,然后智能手机对服务器进行HTTP POST,现在我们希望此事件在笔记本电脑的会话中触发刷新。

1 个答案:

答案 0 :(得分:0)

您的问题不是很清楚您的问题的具体细节,但假设您在电话和笔记本电脑上以用户X(并且您的用户实体有一个字段可以获取每次更新的时间戳,例如:updated_at),并且手机会更改用户地址,例如,您可以通过以下操作使用ajax在笔记本电脑上获取该事件:

class SomeController extends Controller {
      //...
      /**
        * checks if entity was updated since
        *
        * @Route("/check/{id}/{tstamp}", name="entity_check")
        * @Template()
        */
        public function checkAction($id, $tstamp) {
           //check if anything updated by comparing entity's updated_at against $tstamp
           //...
           //as the user locale may differ from server's, send back the timestamp too
           $data['last_update'] = time();
           return new Response(json_encode($data));
        }
}

和twig文件的javascript:

<script>
var last_check = {{ "now"|date("t") }};
setInterval(function() { 
             $.ajax( "{{ url('route_to_your_check_action', {'id': entity.id, 'last_check':''}) }}/" + last_check )
             .done(function(data) { 
                         var info = $.parseJSON(data);
                         last_check = info.last_update;
                         //if anything changed refresh on user side 
                   })
             .fail(function() { //on error do something if needed 
                   });
           }
           , 12000); // make this call every 12 seconds
</script>
希望它有所帮助。