小编sem*_*sel的帖子

对于失败的websocket连接,我可以捕获"无法建立连接"错误吗?

我需要测试是否建立了与websocket服务器的连接.

这时,我可以连接到服务器,但我希望能够捕获该服务器无法访问的可能性,所以这个问题是关于无法建立websocket连接或超时时该怎么办.

仅使用Firefox中的基本websocket代码,它将在大约20秒内超时并调用我的错误处理程序.但它也会抛出一个JavaScript错误(至少对我来说使用Firebug)会出现在浏览器中.然后日志显示:

Firefox can't establish a connection to the server at ws://192.168.0.1/.
Run Code Online (Sandbox Code Playgroud)

到目前为止我尝试过的:

  • 通过添加我自己window.timeout检查onopen处理程序是否已被调用来防止20秒超时,但这不会阻止JavaScript错误.
  • 在我自己的超时结束时强制关闭websocket,但现在我得到两个JavaScript错误 - 原来的加号:

    The connection to ws://192.168.0.1/ was interrupted while the page was loading.

  • 添加try {} catch(e) {}到我的代码,连接套接字和关闭它时 - 没有变化.

有关如何使websocket错误无法在浏览器中显示的任何想法?

javascript websocket

14
推荐指数
1
解决办法
1万
查看次数

什么可以导致PHP脚本在创建文本变量时简单地停止?

我有几个月来一直试图追踪的最奇怪的问题.我添加了在基于MySQL的日志中创建日志条目的调试代码行和行,结果没有意义.

基本上,脚本有时会停止.有时它会随机出现,然后在同一个位置进行十几次,然后它可能会一直持续,然后下次再次进行.

更多细节:

每隔15分钟,我循环遍历一个客户列表,每个客户端都有一个需要为电子邮件解析和收集的数据列表.如果此脚本的先前版本已在运行(即存在小于5分钟的日志条目),则不会再次执行该脚本.因此,如果我看到日志条目中断超过几分钟,然后在第一次启动后15分钟再开始,我就知道出了问题.日志中最奇怪的情况如下:

我在日志中写入了我要为客户端X创建数据库查询.然后我创建了一个包含客户端ID和星期几(date("l", strtotime("now")))的SQL代码的变量.然后我记录查询已成功创建.请注意,查询仅存在于PHP变量中,并且尚未提交给MySQL!

那么,让我举一个例子,说明我在日志中看到的内容:

  • 下午3:00:00 - (脚本开始)
  • 下午3:00:00 - (它通过客户端循环)
  • 下午3:00:04 - (它已通过一些客户,现在正在客户端20上工作)
  • 下午3:00:04 - 为客户端20创建查询
  • (如果没有任何日志条目至少5分钟,则日志将在此处结束,直到脚本在15分钟后自动重新启动)
  • 下午3:15:00 - (脚本开始)
  • 下午3:15:00 - (它通过客户端循环)
  • 下午3:15:04 - (它已经通过一些客户,正在跳过客户端20,因为这显然有问题,现在正在客户端21工作)
  • 下午3:15:04 - 为客户21创建查询
  • 3:15:04 pm - 成功创建了客户端21的查询
  • (如果没有任何日志条目至少5分钟,则日志将在此处结束,直到脚本在15分钟后自动重新启动)
  • 下午3:30:00 - (脚本开始)
  • 下午3:30:00 - (它通过客户端循环)
  • 下午3:30:04 - (它已通过一些客户,现在正在客户端20上工作)
  • 下午3:30:04 - 为客户端20创建查询

并冲洗并重复.现在持续几个小时,它将在它为客户端20创建查询之前失败并在它为客户端21创建查询之后失败.然后,突然之间,它可能会一直通过其他客户端.然后脚本再次启动并继续相同的怪异循环.每隔一天左右,这将发生在一两个其他客户身上.

查询很简单,如下所示:

$sql = "
select fldClientName
from client
where fldClientId = $clientId
and fldEmail".date("l", strtotime("now"))." = 1
";
Run Code Online (Sandbox Code Playgroud)

基本上,如果今天是星期一,它应该检查fldEmailMonday是否设置为1,让我们知道今天需要通过电子邮件发送此客户端.

这适用于我们的大量客户,但它只是随机地卡在一天或两天变化的一个或两个客户端.再次,这发生在BEFORE $sql提交给MySQL 之前!我们陷入了变量的创造$sql.

当然,实际的查询要比我在这里写的要复杂得多,但$clientId它 …

php mysql

6
推荐指数
1
解决办法
191
查看次数

索引对加快 UPDATE 的使用是否有意义?

我在 MySQL 中有一个 MyISAM 表,它包含三列 - 一个自动递增的 ID、一个整数(客户 ID)和一个小数(帐户余额)。

此时,每当我初始化系统时,我都会使用以下命令完全擦除表:

truncate table xyz;
alter table xyz auto_increment=1001;
Run Code Online (Sandbox Code Playgroud)

然后我用来自 PHP 的数据重新填充表。我通常最终在该表中有多达 10,000 个条目。

但是,由于对系统的新要求,我现在还需要能够在系统运行时更新表,所以我不能再擦除表而不得不使用UPDATE而不是INSERT一一更新余额,这将比我现在所做的一次插入 20 条新记录要慢得多。

PHP 仅将客户 ID 和金额发送到 MySQL - 其他 ID 并未实际使用。

所以我的问题是:考虑到来自 PHP 的输入很可能不正常,在客户 ID 上放置索引以加快更新是否有意义?或者添加索引会减慢它的速度以使其不值得吗?

我也不知道该索引是否完全用于UPDATE命令...

关于如何加快速度的任何其他建议?

php mysql indexing

2
推荐指数
1
解决办法
1137
查看次数

我可以禁用特定元素的样式定义吗?

我正在和别人的代码一起工作,整个网站建立在一个非常恼人的桌面结构上,每个<td>元素的宽度都是100%...如果我有时间,我不会在这里问这个,只是重写整个darn的东西,但它是一个相当大的网站,需要几周时间才能重写,我需要jquery插件数据表才能工作.但是,由于#container td { width: 100%; padding: 0; }主要样式定义中的条目,整个表格完全搞砸了:-(

那么......有没有办法让CSS在所有表上使用这些默认定义除了<table id="exception">它应该忽略这些设置而不是使用数据表附带的那些?

问题是优先级 - table.dataTable td { padding: 3px 10px; }例如,datatables有代码,因为#container td优先级被忽略了

再说一次,就像我想的那样,我现在不能搞乱原有的网站结构.我可以编辑某些项目的width: 100%数据表CSS,但我还必须以一种STILL允许数据表实现自己的定义的方式删除这一个表的内容......

我在这个网站上使用jQuery作为一个页面,所以也许我可以使用它来清除这些定义,但那时也将清除由datatables设置的定义......

想法(除了"不要使用表格")?

html css jquery

1
推荐指数
1
解决办法
68
查看次数

标签 统计

mysql ×2

php ×2

css ×1

html ×1

indexing ×1

javascript ×1

jquery ×1

websocket ×1