Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/Javascript:查看是否有人访问相同的url_Javascript_Php_Ajax_Angularjs_Laravel - Fatal编程技术网

PHP/Javascript:查看是否有人访问相同的url

PHP/Javascript:查看是否有人访问相同的url,javascript,php,ajax,angularjs,laravel,Javascript,Php,Ajax,Angularjs,Laravel,我有一个用AngularJS在Laravel中构建的项目,在那里你可以查看和编辑报告。 我想实现这样一个功能:当有人编辑报告时,其他人不应该被允许这样做。当有人编辑它时,它应该被锁定。 当用户完成编辑或离开页面时,报告应打开供任何人再次编辑 你对此有什么建议?我已经考虑了一些cookies/会话,但我不确定如何检测用户是否离开页面。我认为最好的方法是使用WebSocket。报表编辑将创建与服务器的websocket连接,当编辑页面关闭时,连接将终止您需要在服务器上实现一些签出/签入机制。这与An

我有一个用AngularJS在Laravel中构建的项目,在那里你可以查看和编辑报告。 我想实现这样一个功能:当有人编辑报告时,其他人不应该被允许这样做。当有人编辑它时,它应该被锁定。 当用户完成编辑或离开页面时,报告应打开供任何人再次编辑


你对此有什么建议?我已经考虑了一些cookies/会话,但我不确定如何检测用户是否离开页面。

我认为最好的方法是使用WebSocket。报表编辑将创建与服务器的websocket连接,当编辑页面关闭时,连接将终止

您需要在服务器上实现一些签出/签入机制。这与Angular无关,而且在任何情况下都过于宽泛。在报告中添加一个timestamp字段,并每隔30秒通过ajax更新该时间戳。然后,对于每个想要处理该报告的用户,请检查该报告是否具有更新的时间戳,例如1分钟或2分钟。@NewDev带有一些静态代码,当您单击“编辑报告”时锁定该报告,然后当您单击“发布报告”或“保存报告”时解锁该报告或者类似的东西,用户可能会在proiblem中关闭窗口或只是导航到其他地方。这种情况可能会导致报告被锁定good@ITroubs,是:)这就是为什么我加了“太宽了”,因为如果目的是像在SharePoint中一样签出,它只会保持对特定用户的签出状态,直到地狱冻结。@NewDev haha yes=)但我认为我第一次提出的简短建议应该是指向正确方向的一个很好的指针,可以缩小它的范围;-)以前没有使用过WebSocket,但从我目前所读的内容来看,我确实是一个很好的解决方案。谢谢你的提示@Mattias websocket方法与我的方法类似,因为您仍然需要以某种方式处理报告的锁定。WebSocket不能解决这个问题。他们只是用在浏览器中永久运行并向您的服务器发送请求(取决于您选择的实现,它可能会发送请求或通过特定端口发送其他请求。这可能会导致对数据库的更多点击)的内容来取代30秒的定时ajax。谢谢。我需要在这方面做更多的研究,也许我最终会使用你的解决方案。