laravel框架编程,读数据库出现错误,显示internal server error

taoweiliang02 2016-04-10 11:48:43
这个函数就是提取出数据库里packages表中最新一条记录,然后再传回界面,使用的是laravel框架,我感觉是读数据库的语句写错了?但是找不出问题,望大家指导!
代码如下:
public function message(Request $request){
set_time_limit(0);//无限请求超时时间
if(empty($_POST['time']))exit();
$i=0;
$packages = Package::orderBy(‘sum’, 'desc')->take(1)->get();//取出最新的一条记录的id
$getID=$packages->id;
while (true){
//sleep(1);
$i++;
$packages = Package::orderBy(‘sum’, 'desc')->take(1)->get();//取出最新的一条记录的id
$getnewID = $packages->id;
if ($getID!=$getnewID) {//比较是否有更新,有更新则取出最新的一条记录传回去
$getID++;
$packages = Package::findOrFail($getID);
$arr=array('success'=>"1",'name'=>$packages->sum,'text'=>$packages->seed);
echo json_encode($arr); //传回页面
exit(); //若得到数据则马上返回数据给客服端,并结束本次请求
}

}


}

...全文
1123 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
taoweiliang02 2016-04-10
  • 打赏
  • 举报
回复
对的,就是在里面那个while循环的时候,如果有数据更新,那么id就会不一样,然后就能检测出有新数据插入了,我是这么想的
xuzuning 2016-04-10
  • 打赏
  • 举报
回复
你循环外已经取到最新的 id 了,为何还要在循环中再取? 你是想检测两次查询间是否有数据插入吗?
xuzuning 2016-04-10
  • 打赏
  • 举报
回复
where('sum', '545.00') 是否有问题,那要看 where 中是如何处理的了
taoweiliang02 2016-04-10
  • 打赏
  • 举报
回复
这个问题之后改了程序解决了,还是报一样的错误,我发现就是读数据库有问题,程序修改如下: public function message(Request $request){ if(empty($_POST['time']))exit(); set_time_limit(0); $i=0; //无限请求超时时间 while (true){ //sleep(1); usleep(500000);//0.5秒 $i++; //若得到数据则马上返回数据给客服端,并结束本次请求 $package = new Package; $package = DB::table('packages')->where('sum', '545.00')->first();//从数据库中packages中取出sum为545.00的一行(有什么语法问题吗?) $arr=array('success'=>"1",'name'=>$package->sum,'text'=>$package->seed); echo json_encode($arr); exit(); //服务器($_POST['time']*0.5)秒后告诉客服端无数据 if($i==$_POST['time']){ $arr=array('success'=>"0",'name'=>'xiaocai','text'=>"1"); echo json_encode($arr); exit(); } } }
xuzuning 2016-04-10
  • 打赏
  • 举报
回复
然后呢? 然后就 echo json_encode($arr); //传回页面 那么如果 24小时都没有新数据插入,你的客户端就等你 24 小时? 就算你的客户能等,web 服务器也不会等的

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧