服务器崩溃了

时间:2015-02-28 22:03:38

标签: javascript php jquery

我正在运行一个longpolling脚本来从数据库中获取数据。在将我的脚本移动到MVC之前,它工作正常。

我查看了chrome开发人员工具并且它没有显示任何内容,但页面只是继续加载,当我去刷新它不会加载时,我必须关闭我的xampp服务器或关闭我的浏览器。 ..这是我的剧本:

class SystemController extends Controller
{

    public function lastbid()
    {

        set_time_limit(0);


        // main loop
        while (true) {


            //get the product info
            $getbidresult = ProductModel::bidprice(Request::get('item'));

            // if ajax request has send a timestamp, then $last_ajax_call = timestamp, else $last_ajax_call = null
            $last_ajax_call = Request::get('timestamp'); 


            // get timestamp of when file has been changed the last time
            $lastbid = isset($getbidresult->timestamp) ? $getbidresult->timestamp : 0;

            // if no timestamp delivered via ajax or data.txt has been changed SINCE last ajax timestamp
            if ($last_ajax_call == null || $lastbid > $last_ajax_call) {

              // put last bid info into an array
              $result = array(
                'bidamount' => isset($getbidresult->amount) ? System::escape($getbidresult->amount): 0,
                'timestamp' => System::escape($lastbid)
              );

              // encode to JSON, render the result (for AJAX)
              $json = json_encode($result);
              echo $json;

              // leave this loop step
              break;

            } else {
              // wait for 1 sec (not very sexy as this blocks the PHP/Apache process, but that's how it goes)
              sleep(10);
              continue;
          }
        }

    }
}

这就是我用JS抓取数据的方式。

function getContent(timestamp)
{
  var queryString = {
    'timestamp': timestamp
  };
  $.ajax(
  {
    type: 'GET',
    url: '<?php echo Config::get('URL'); ?>system/lastbid?item=<?php echo System::escape($recentitem->id); ?>',
    data: queryString,
    success: function(data)
    {
      var obj = jQuery.parseJSON(data);
      $('#bidprice-<?php echo System::escape($recentitem->id); ?>').html(obj.bidamount);
      getContent(obj.timestamp);
    }
  });
}
$(function()
{
  getContent();
});
$(document).ready(function() {
});
除非我在错误的地方看,否则我已经查看了apache日志,但没有用。代码中的任何内容看起来都不合适,这不是我所知,但我可能会忽视某些内容。

我在foreach中有脚本,所以我可以为每个产品启动div。

编辑,查看apache和mysql日志,它什么也没显示。这可能是内存泄漏吗?

1 个答案:

答案 0 :(得分:0)

我想我已经在外部网站的帮助下解决了这个问题。这与睡眠()

有关

我已经使用以下方法修复了它:

  session_write_close(); 

在报告之前,我会做更多测试,看看它是如何阻止的。之所以等等。