在controller-Laravel PHP上进行处理时是否有获取数据的方法
我在控制器上有一个类似爬网的功能 我的控制器有时会睡10秒钟,有时会消失 像这样:在controller-Laravel PHP上进行处理时是否有获取数据的方法,php,laravel-5,controller,Php,Laravel 5,Controller,我在控制器上有一个类似爬网的功能 我的控制器有时会睡10秒钟,有时会消失 像这样: while ($someTrueFalse) { $data[]=$gettingdata; $wantToPassText="Received ".count($data)." - Sleeping 10 seconds"; if($someControl){ $someTrueFalse=false; }
while ($someTrueFalse) {
$data[]=$gettingdata;
$wantToPassText="Received ".count($data)." - Sleeping 10 seconds";
if($someControl){
$someTrueFalse=false;
}
sleep(10);
}
return view('any_view');
如何从任何视图访问$WANTOPassText
变量
我试过了
setcookie('data',$wantToPassText,time()+60);
但我无法在控制器处理时访问。我只能在进程完成时访问
我尝试过,将数据库写入此$WANTOPassText
,但在处理过程中无法再次访问
我是说,
我想在页面上写实时进程状态。怎么可能呢
对不起,我的英语不好…解决方案可能是将其存储在
缓存中
可以按如下方式存储值:
Cache::put(['text' => $wantToPassText], 1);
第二个参数是要缓存的分钟数(从Laravel 5.8开始,现在是秒数)
完成任务后,可以清除缓存键/值:
Cache::forget('text');
注意:您应该确保在控制器的顶部包含外观:
use Cache
你想要实现什么?除非循环完成处理,否则无法访问您的视图。如果将$WANTOPASSTEXT
从控制器传递到视图,则视图可以获取它。我想向用户显示等待时的处理过程。我可以使用jqueryajax方法。例如,我想向用户显示,“收到20个数据”。3秒后循环返回时显示“已接收40个数据”。我尝试在每次返回while循环时设置cookie,并尝试使用$\u cookie在另一个页面上阅读,但没有成功。Cookie只在控制器完成工作时设置。把它放在作业中,实现socket你能解释一下吗?用户上传一个文件,你想处理它,并向用户显示一些操作更新,不是吗?