小编Pet*_*ohn的帖子

PHP最好的MD5多维数组方式?

生成多维数组的MD5(或任何其他哈希)的最佳方法是什么?

我可以轻松地编写一个循环,遍历数组的每个级别,将每个值连接成一个字符串,然后简单地在字符串上执行MD5.

然而,这看起来很麻烦,我想知道是否有一个时髦的函数,它将采用一个多维数组,并哈希它.

php arrays hash md5 multidimensional-array

110
推荐指数
5
解决办法
5万
查看次数

PHP SimpleXML - 删除xpath节点

我有点困惑,我怎么能删除我可以通过xpath搜索找到的东西的父节点:

$xml = simplexml_load_file($filename);
$data = $xml->xpath('//items/info[item_id="' . $item_id . '"]');
$parent = $data[0]->xpath("parent::*");
unset($parent);
Run Code Online (Sandbox Code Playgroud)

所以,它找到了项目ID,没有问题 - 但是没有设置不能摆脱这个<items>节点.我想要做的就是删除<items>...</items>此产品.显然,<items>xml文件中存在大量节点,因此无法unset($xml->data->items)删除所有节点.

任何想法非常赞赏:-)

php simplexml

12
推荐指数
3
解决办法
3万
查看次数

PHP最快的读取服务器响应的方法

我在使用fgets抓取服务器对我正在进行的一些批量数据库调用的响应所产生的延迟时遇到了一些实际问题.

我正在通过一批说,10,000个电话发送,并且我已经跟踪延迟到fgets导致我的应用程序的速度保持不变,因为需要抓住每个呼叫的响应.

我发现这个帖子http://bugs.php.net/bug.php?id=32806很好地解释了这个问题,但他正在读一个文件,而不是服务器响应,所以fread可能有点棘手,因为我可以参与其中下一行,以及我不想要的额外内容.

所以我的问题是,作为fgets的替代方案,从服务器读取响应的最佳/最快方法是什么?

php performance fgets fread

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

PHP可靠地设置Etag

我无法在用户的浏览器上可靠地设置Etag.当用户点击我的一个外部链接时,我想将文章ID设置为他们的Etag(我也使用cookie,但我喜欢尝试使用Etag专门测试其可靠性).

几个小时/天之后,当同一个用户返回我的网站时,我希望能够阅读Etag值并将其用于内容.

我可以在初始点击时设置Etag,但是当用户返回时,Etag值就消失了.我认为它已过期或其他东西.这是我一直在尝试的代码:

<?

$time = 1280951171;
$lastmod = gmdate('D, d M Y H:i:s \G\M\T', $time);
$etag = '123';


$ifmod = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] == $lastmod : null; 
$iftag = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] == $etag : null; 

if (($ifmod || $iftag) && ($ifmod !== false && $iftag !== false)) { 
    header('HTTP/1.0 304 Not Modified'); 
} else {
    header("Last-Modified: $lastmod"); 
    header("ETag: $etag");
}

print_r($_SERVER);

?>
Run Code Online (Sandbox Code Playgroud)

php etag header http

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

SocketIO +节点 - 恢复丢失的连接

我正在使用socketio/node,向浏览器提供一些时髦的统计数据,所有标准内容.我正在使用这两个库的最新版本.现在,我遇到了几个问题:

1)节点日志中的警告消息:

(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.
Trace: 
    at CleartextStream.<anonymous> (events.js:101:17)
    at [object Object].<anonymous> (/var/www/lib/other/Socket.IO/lib/socket.io/client.js:83:20)
    at [object Object]._onConnect (/var/www/lib/other/Socket.IO/lib/socket.io/transports/xhr-polling.js:23:35)
    at [object Object].check (/var/www/lib/other/Socket.IO/lib/socket.io/listener.js:77:12)
    at Server.<anonymous> (/var/www/lib/other/Socket.IO/lib/socket.io/listener.js:33:14)
    at Server.emit (events.js:45:17)
    at HTTPParser.onIncoming (http.js:904:12)
    at HTTPParser.onHeadersComplete (http.js:87:31)
    at CleartextStream.ondata (http.js:820:22)
    at CleartextStream._blow (tls.js:228:29)
Run Code Online (Sandbox Code Playgroud)

这是XHR警告的一个例子,我可以理解,因为XHR的性质是多个连接/断开连接.但是,当我有很多客户通过其他传输连接时,我得到相同的.

2)随机连接丢失.由于一些莫名其妙的原因,连接随机丢失.这不是机器或浏览器甚至是特定的传输.浏览器上的连接将随机停止接收更新.节点日志中没有特定的断开连接消息,手动刷新浏览器可以解决问题.

那么,我想知道的是 - 这两个问题是相关的,还是单独的问题?您是否经历过这些连接丢失?如果是这样,你是如何设法解决它们的?它非常令人沮丧,因为它非常接近100%完美.我希望感到温暖和亲切,因为我们知道所有查看我的应用程序页面的客户都会收到数小时甚至数天的一致更新.

非常感谢您的帮助和建议!

干杯,

皮特

node.js socket.io

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

如何显示大量的报表数据客户端(mongoDB,JS)

由于我们在应用程序中收集的数据的性质,它必须允许用户能够搜索1,000,000多行数据,并尽快接收客户端的结果.

我们使用各种技术,目前正在试验文档存储引擎MongoDB.我们基本上以我们希望在客户端显示它的方式将报告数据存储在Mongo中.

但是,这是我想要依靠你的经验的地方.我们使用了一些报告表插件,例如datatables.net,但是当客户端请求可能匹配100,000多条记录的数据时,将数据传递到客户端的延迟可能需要花费一分多钟才能将JSON从服务器导出到客户.

我已经尝试通过一次只向客户端发送1000个结果来过滤结果集,但是如果用户决定对列进行排序怎么办?必须再次执行整个请求,并将第一个1000个结果加载到客户端.

但是如果客户选择在列中搜索,则必须再次重新获取结果.当所有数据都已加载到客户端时,所有这些问题都不存在.

所以基本上我的问题是,你如何有效和快速地允许客户搜索和操作大型数据集,但是将结果传递给客户端的方式不要求每一个结果都要一次性发送,因此保持客户端尽可能轻量级?

我确定必须有一些MongoDB的前端数据表类型插件,可能通过node.js进行直接JSON通信,但我找不到任何东西!

谢谢你的帮助.

javascript reporting datatables mongodb node.js

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