小编Sam*_*aye的帖子

使用xhr轮询时如何解决Chrome的6连接限制

我最近发现Chrome的连接数限制为6(Chrome在传输一定数量的数据后挂起 - 等待可用的套接字),不幸的是,我在加载后通过"等待可用的套接字"消息发现了这一点.太多标签(7).

我知道这是Chrome,因为另一个Chrome用户(也就是另一个浏览器会话)同时在同一台计算机上完全加载网页(我的计算机上打开了多个Chrome用户).所以它不是服务器的任何方式.

我相信这是因为,在socket.io(我用于通知)中,我是xhr-polling,这导致Chrome必须等到它可以从其中一个连接中获取套接字才能处理页面.

这是什么解决方案?

我想到了几个解决方案:

  • 使xhr-polling窗口变小,这会增加浏览器和node.js中的连接,但这意味着页面不会停止.
  • 使用websockets.我不确定websockets是否也能解决这个问题.
  • 在未聚焦的选项卡上使连接处于非活 虽然看起来其他网站不必这样做......
  • 使用某种连接共享.考虑到Chrome将websockets和xhr请求隔离到选项卡,我发现很难理解它是如何工作的.

作为一个补充点:我从一开始就没有使用websockets的原因是因为我使用了cloudflare.但如果这是解决问题的方法那么:就这样吧.

google-chrome xmlhttprequest websocket socket.io

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

PHP7的PDO ext是否将整个结果集读入内存?

我注意到,自从我升级到PHP7后,一些SQL语句不再有效,而是内存不足.

我有这个代码:

$query = Yii::$app->db->createCommand('select * from tbl_title')->query();
while ($row = $reader->read()) {
    var_dump($row);
    exit();
}
Run Code Online (Sandbox Code Playgroud)

Yii2的数据库抽象只是PDO上的一个非常薄的层,并没有做任何额外的事情.query()除了在日志文件(Yii2)中添加一行以进行性能分析并reader->read()只调用PDO流的fetch()功能之外,什么都不做.

但它的内存耗尽引用我的表的大小(使用的空间),即尝试分配385 MB的进程内存:

允许的内存大小为134217728字节耗尽(试图分配385883840字节)

作为一个扳手,如果我使用一个查询,其结果集完全符合PHP进程的128 MB限制.

那么,PHP7已经改变了,我可以改回来吗?

php mysql pdo yii2 php-7

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

PHP在命名空间中自动加载

我的命名空间中的自动加载有点问题.如PHP手册所示:http://us.php.net/manual/en/language.namespaces.rules.php您应该能够使用完全限定名称自动加载命名空间函数,例如\ glue\common\is_email( ).

事情是我有一个函数spl_autoload_register(array($ import,"load")); 在初始命名空间内,但每当我尝试从初始命名空间调用\ glue\common\is_email()时,它都不会传递自动加载功能,但是当使用新的is_email()时(在类的上下文中)它将会.我不明白手册说我可以从完全合格的名字自动加载,但我不能:.

这是我的代码:

namespace glue;

require_once 'import.php';

use glue\import as import;
use glue\core\router as router;

$import = new import();

spl_autoload_register(array($import, "load"));

/** Works and echos glue\router **/
$router = new router();

/** Don't do nothing **/
$cheese = \glue\common\is_email($email);
Run Code Online (Sandbox Code Playgroud)

我也试过这段代码:

namespace glue;

require_once 'import.php';

use glue\import as import;
use glue\core\router as router;
use glue\common;

$import = new import();

spl_autoload_register(array($import, "load"));

/** Works and echos glue\router **/
$router = new router();

/** …
Run Code Online (Sandbox Code Playgroud)

php namespaces autoload spl-autoload-register

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

PHP/JS文本差异

首先,这是这四个问题的完全重复:

似乎时间已经改变,因为这些问题是第一次被问到的,我想知道什么是现在这种比较的好工具?我看过(除了这些问题):

但是我得到的所有这些都是现在没有用的,或者看起来有点狡猾,因为它们没有被那么多使用(有些甚至暗示它们不是很有效)并且PEAR让我担心.我讨厌为一个小模块安装PEAR,不仅如此,但是看起来像是通过我自己的窗口扔砖来安装它用于这样一个小模块,与PEAR相比,不仅如此,模块已被取代并放置在不同的频道(不知道为什么?).我会使用PEAR版本,如果它是我唯一的选择,但我想使用最新的软件包.

有没有人知道PHP和/或JavaScript(JQuery)中使用良好且当前维护或内置函数(即使它是PHP扩展)的文本差异?

javascript php jquery

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

PHP array_diff怪异

这是一个如此简单的问题,但PHP文档并没有解释为什么会发生这种情况.

我有这个代码:

var_dump($newattributes); var_dump($oldattributes);
var_dump(array_diff($newattributes, $oldattributes));
Run Code Online (Sandbox Code Playgroud)

为简单起见,我将省略我实际使用的大部分结构(因为每个元素长117个元素)并切入案例.

我有一个叫做的数组$newattributes,看起来像:

array(117){
    // Lots of other attributes here
    ["deleted"] => int(1)
}
Run Code Online (Sandbox Code Playgroud)

而另一个$oldattributes看起来像:

array(117){
    // Lots of other attributes here
    ["deleted"] => string(1) "0"
}
Run Code Online (Sandbox Code Playgroud)

哪个看起来不一样吧?根据array_diff:没有.我得到的输出array_diff是:

array(0) { } 
Run Code Online (Sandbox Code Playgroud)

我已阅读文档页面,但它说:

当且仅当(字符串)$ elem1 ===(字符串)$ elem2时,两个元素被认为是相等的.用文字表示:当字符串表示相同时.

而且我不确定"1"如何能够对等于"0".

所以我看到一些警告,array_diff我没有考虑到?

php

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

Yii2环境文件夹的重点

我正在努力工作环境文件夹的重点.

最初我有一个想法,你可以将网络服务器指向文件夹中的不同devprod文件environment夹,但在读了一下之后我意识到情况并非如此.

在Yii 1中你只需要多个即可解决这个问题index.php:

  • index.php
  • index-local.php

那么问题是这个新的环境结构实际上给我带来的好处是什么?

php yii yii2

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

在Javascript中解析PHP会话

我最近使用node.js扩展了我的网站,并且已经实现我需要一个PHP会话的会话处理程序.现在一切都很酷,花花公子和node.js读取php会话,并可以传播自己与php的会话.我正在使用数据库会话,因此会话数据被保存到数据库中的一个字段中.

然而,我发现了一个小问题.我试图将会话数据读入node.js,这真是一个非常奇怪的字符串.我已经能够将每个会话变量的结构变为:

'field_name'|'type':'length':'value';
Run Code Online (Sandbox Code Playgroud)

现在在某些字符串上,值字段可能在其他字符串上缺失,长度可能会丢失(当变量为空时).类型也可以多于b,s,i; 它也可以是N(NULL).

我原本想起了一个巨大的JS翻译器,但这在某种程度上似乎是一种非常错误的方式.

这里有没有人试图在JS中提取php会话变量,是否有任何类型的脚本可以帮助?也许我可以在PHP端使用格式化的东西让我的生活在node.js中变得更容易?

编辑:架构看起来像:

{ _id: { id: 'L:\u00c1\u009d\u008e\u00ad\u000e}<\u0002\u0000\u0000' }
, session_id: 'a2clfnjhopv1srs5k5elgbfjv5'
, user_id: 0
, session_data:     'logged|b:0;uid|i:0;server_key|N;AUTH_TIER2|b:0;email|s:0:"";cheese|s:6:"cheese";'
, active: 1
, expires: 1278920567
}
Run Code Online (Sandbox Code Playgroud)

这是用户会话的mongo db记录.需要翻译的字段是session_data.粘贴它时会出现某种格式化错误,因为当我尝试并出于某种原因制作它时,stackoverflow不会将其格式化为代码.

我之前尝试过JSONfy这个字段,但它丢失了它的类型,并没有读取Null条目等所以我停止了

谢谢,

javascript php session node.js

9
推荐指数
2
解决办法
6015
查看次数

用于作业服务器的Amazon Auto Scaling API

我已经阅读了几乎整个文档,甚至超越了AWS AS API,以了解所有AS的东西.

然而,我仍然想知道(如果我想先从某人那里找到这个,那么我实际上没有使用过API)如果我的情景对AS是可行的.

假设我在AS组中设置了一堆工作服务器,所有工作服务器都在每个工作,并且突然有时间(我不知道,AVG CPU大于或者在另一种情况下小于80%)可以向上或向下扩展.

我主要担心的是失去了当前正在进行的工作.也许这可以通过一个例子更好地解释:

  • 我启动了5个作业服务器,上面有5个作业
  • 一个作业完成,并在Amazon API中触发缩小触发器
  • 亚马逊将其缩小规模
  • 我失去了一个实际上正在运行工作的作业服务器(90%完成再次启动)

考虑到这一点,我最好只使用Amazon Spot Instance/EC2 API并管理我自己的扩展,还是我缺少关于Amazon API如何判断服务器终端的东西?

说实话,我宁愿扩展到SQS等待数量,而不是服务器上的一些健康数字:

  • 每100条消息等待增加20%的群集容量

但这对AS来说似乎也不太可行.

那么AWS AS API是不是正确的解决方案,还是我错过了一些关于它如何工作的重要信息?

谢谢,

amazon-ec2 amazon-web-services autoscaling

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

服务器端图像大小调整性能

我越来越多地从大型网站(Google,Facebook,Youtube和co)注意到他们正在调整图像"靠近"他们想要的测量客户端,我想知道这是否是人们思考方式的转变他们很懒.

对于一组产品(电子商务),将特定大小的标准图像集添加到新的图像大小的场景中,这些产品的数量可达数百甚至数百万.

想象一下,我有一份300x350或者其他客户端的原始图像副本,将其大小调整为200x250.我为每个产品在页面上为20个产品执行此操作.

容纳这种新尺寸的服务器端的工作和问题是否真的值得客户端受益?

如果没有,那么判断何时应该预处理一定大小的好方法是什么?

如果是的话,是否曾经有一段时间服务器端处理和缓存可能变得过度(即包含8个图像的110x220,120x230,150x190等)?

html php

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

了解弹性搜索

很抱歉这样说,但ES的文档(http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/index.html)令我困惑.

感谢词汇表,我理解数据库,表格和行的术语,但我已阅读文档的大部分内容,但我无法找到答案:

作为参考,我首先阅读这些链接:

如果文档中存在该信息,那么如果您能指出我的话,我将非常感激.

编辑:

我也不确定自动发现如何在分布式网络上运行.如果每个公共网络都围绕它如何连接到可能位于世界另一端的正确网络?

elasticsearch

7
推荐指数
2
解决办法
4664
查看次数