我需要测试是否建立了与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错误无法在浏览器中显示的任何想法?
我有几个月来一直试图追踪的最奇怪的问题.我添加了在基于MySQL的日志中创建日志条目的调试代码行和行,结果没有意义.
基本上,脚本有时会停止.有时它会随机出现,然后在同一个位置进行十几次,然后它可能会一直持续,然后下次再次进行.
更多细节:
每隔15分钟,我循环遍历一个客户列表,每个客户端都有一个需要为电子邮件解析和收集的数据列表.如果此脚本的先前版本已在运行(即存在小于5分钟的日志条目),则不会再次执行该脚本.因此,如果我看到日志条目中断超过几分钟,然后在第一次启动后15分钟再开始,我就知道出了问题.日志中最奇怪的情况如下:
我在日志中写入了我要为客户端X创建数据库查询.然后我创建了一个包含客户端ID和星期几(date("l", strtotime("now")))的SQL代码的变量.然后我记录查询已成功创建.请注意,查询仅存在于PHP变量中,并且尚未提交给MySQL!
那么,让我举一个例子,说明我在日志中看到的内容:
并冲洗并重复.现在持续几个小时,它将在它为客户端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它 …
我在 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命令...
关于如何加快速度的任何其他建议?
我正在和别人的代码一起工作,整个网站建立在一个非常恼人的桌面结构上,每个<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设置的定义......
想法(除了"不要使用表格")?