PHP 彗星。怎样才能做得更好呢?

2024-06-28

我有一个简单的彗星聊天。 JavaScript 通过长轮询发送 ajax 请求。当服务器在数据库中发现新消息时,它会应答并给出 JSON。接下来,JavaScript 再次发送请求。

JavaScript:

function cometConnect(){
$.ajax({
      cache:false,
      type:"get",
      data:'ts='+ts,
      url: urlBack,
      async: true,
      success: function (arr1) {
      //work with JSON
      //.....
      },
      complete:function(){
        cometConnect(true);
        nerr=false;
      },
      dataType: "text"
    }); 
}

PHP

$flag=true;
$lastmodif = isset($_GET['ts']) ? $_GET['ts'] : 0;
while($flag){
  $q=mysql_query("SELECT text, posterId,modified, fromUserId,toUserId, login FROM commonMessage WHERE modified>$lastmodif");

      while($r=mysql_fetch_row($q)){
        $flag=false;
        //Prepare JSON... variable $resp
            //.........
      }

  usleep(5000); 
}
echo $resp;

问题如下:这个“while($flag)”可以执行很长时间(如果没有人发布消息)。因此,Apache 可以抛出异常(最大执行时间,有时是 502 Bad Gateway 或 Gateway Timeout)。

怎么解决呢?

使用 .htaccess 和“php_value max_execution_time 0”?

或者当服务器返回错误时简单地从 JavaScript 发送新请求(这会使获取消息变得更慢)?

或许,还有其他办法吗?


您应该查看 APE 项目。它是一个 Ajax 推送引擎,可能有助于实时通信:www.ape-project.org

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 彗星。怎样才能做得更好呢? 的相关文章

  • 无法从 localhost/xampp 发送邮件

    无法连接到 mail google com 端口 587 上的邮件服务器 请验证您的 SMTP 和 smtp port 设置php ini or use ini set 我将 xampp php ini 和 sendmail ini 文件配
  • 如何在Javascript中保存zip文件的二进制数据?

    我从 AJAX 响应中收到以下响应 这是 zip 文件的响应 请让我知道如何在 Javascript 中保存此 filename zip ZIP 里面有 PDF 文件 我的代码是这样的 ajax url baseURLDownload se
  • POST 数据加密 - HTTPS 足够吗?

    考虑一个场景 其中用户身份验证 用户名和密码 由用户在页面的表单元素中输入 然后提交 POST 数据通过 HTTPS 发送到新页面 其中 php 代码将检查凭据 现在 如果黑客位于网络中 并说可以访问所有流量 那么在这种情况下应用程序层安全
  • 更新 Composer 依赖项时 Artisan 命令出错

    我正在为 Laravel 开发一个库 其中包含一个服务提供者 我已将此库添加到另一个项目的composer json file The composer json 主项目 的文件包含以下脚本 scripts post root packag
  • 将 SQL 查询的 SELECT 子句解析为 PHP 数组

    这更多的是用于分析 PHP 中的查询before它被发送到服务器 我这样做的原因非常复杂 所以我不想深究其原因 在 PHP 中 我需要将字段选择存储到 PHP 数组中 以这个查询为例 SELECT user id username DATE
  • PHP curl 获取标头参数

    我将curl 与PHP 结合使用来获取API 调用的标头响应 这是我的代码 curl curl init curl setopt curl CURLOPT URL http localapi com v1 users curl setopt
  • 纯 JavaScript 工具提示

    我正在尝试用纯 JavaScript 制作一个工具提示 显示在hover 就像 Stack Overflow 中将鼠标悬停在个人资料名称 a 上一样div显示 我尝试使用onmouseover onmouseout并添加了setTimeou
  • 带搜索框的 D3 图表

    我在 D3 中创建了一个图表 其中节点显示特定个人创建文档的时间 该图表还显示了一个搜索框 该搜索框根据搜索框输入是否与与该文档关联的单词匹配而将节点变成红色 这些单词列在数据集的第 5 列中 请参阅下面的数据集 我的问题 一旦将搜索输入到
  • jQuery 分钟和秒倒计时器

    我想创建一个 jquery 倒计时器 我尝试了以下代码 但它不起作用 我该怎么办 DEMO https jsfiddle net tbosn210 https jsfiddle net tbosn210 var interval setIn
  • Javascript 或 Coffeescript 中的“Bucket Fill”算法

    我正在编写一个小coffeescript js应用程序 允许用户设计图标 16x16像素或32X32像素 该图标实际上是一个带有颜色单元的二维数组 单元格可以有颜色或为空 我希望用户能够使用 桶油漆 工具填充空白单元格 代表着 如果用户单击
  • Codeigniter 错误:不允许您尝试上传的文件类型

    如果我上传一个csv文件 没有问题localhost一切工作正常 但是当我在实时服务器上上传我的应用程序并上传csv文件然后抛出此错误 The filetype you are attempting to upload is not all
  • Active Record 库的 CodeIgniter 挂钩

    我需要一些帮助来理解 CodeIgniter 的钩子逻辑 以使代码适应我的需要 这一页 https www codeigniter com user guide general hooks html https www codeignite
  • 将 html

    我有一些服务器端代码当前支持 http 字节范围请求 没有任何问题 但是 我希望能够在将转码后的块发送到客户端之前使用 ffmpeg 即时转码视频文件 位于磁盘上 但 ffmpeg 要求我在获取字节时给它一个寻道时间范围来自客户 给定客户端
  • php 32位日期解析1901年12月13日之前的日期

    我很高兴使用strtotime http www php net manual en function strtotime php在我的开发机器上解析日期 其中一些日期是 1800 年代 一个极端的例子是 1500 年代 但我的开发机是64
  • 比在配置文件中以纯文本形式存储 mysql 密码更好的方法吗?

    许多 PHP 程序要求用户将 mysql 密码以纯文本 字符串或常量 形式存储在应用程序根目录的配置文件中 这一直困扰着我 这么多年过去了 还有更好的方法吗 到目前为止 我已经提出了两个最小的安全提升方案 使用 htaccess 中的规则使
  • 重定向至 2 页

    我有一个 PHP 页面 我想先将其重定向到一个页面 例如 google com 然后再重定向到另一个页面 例如 bing com 为此 我使用以下方法 header Location http google com header Locat
  • php SimpleXML 属性丢失

    我这里有以下 xml 文档 编辑 示例见下文 我正在使用 php SimpleXML 将其转换为对象来读取它 xmlContent file get contents path test xml tablesRaw new SimpleXM
  • 什么是标志变量?

    最近我遇到了标志变量 但我不知道它们的作用 我不太确定何时使用标志变量以及如何使用它 我用 Google 搜索了它 但没有任何与我的上下文 JavaScript 相关的具体示例 标记变量的定义和使用 http www javascriptk
  • JQuery 循环遍历动态元素并获取数据值

    我正在尝试使用可折叠面板来完成我的要求 sport on click function var thisId this attr id var thisChildren this sportlist thisChildren each fu
  • 如何防止外部 CSS 添加和覆盖 ReactJS 组件样式

    我有一个自定义的 ReactJS 组件 我想以某种方式设置样式 并将其作为插件提供给许多不同的网站 但是 当网站使用全局样式 Twitter bootstrap 或其他 css 框架 时 它会添加并覆盖我的组件的样式 例如 全局 css l

随机推荐