小编Way*_*tty的帖子

Chrome net :: ERR_INCOMPLETE_CHUNKED_ENCODING错误

在过去两个月中,我在Chrome的开发者控制台上收到以下错误:

net::ERR_INCOMPLETE_CHUNKED_ENCODING
Run Code Online (Sandbox Code Playgroud)

症状:

  • 页面未加载.
  • 截断的CSS和JS文件.
  • 页面悬挂.

服务器环境:

  • Apache 2.2.22
  • PHP
  • Ubuntu的

在我们内部的Apache服务器上发生了这种情况.它不会发生在任何其他人身上 - 即我们的用户都没有遇到这个问题 - 我们的开发团队也没有其他人.

其他人使用完全相同的Chrome版本访问完全相同的服务器.我还尝试禁用所有扩展程序并在隐身模式下浏览 - 无效.

我使用过Firefox并且发生了同样的事情.截断的文件和诸如此类的东西.唯一的问题是,Firefox不会引发任何控制台错误,因此您需要通过Firebug检查HTTP请求以查看问题.

来自Apache的响应标头:

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:close
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Mon, 27 Apr 2015 10:52:52 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Pragma:no-cache
Server:Apache/2.2.22 (Ubuntu)
Transfer-Encoding:chunked
Vary:Accept-Encoding
X-Powered-By:PHP/5.3.10-1ubuntu3.8
Run Code Online (Sandbox Code Playgroud)

在测试时,我能够通过在我的htaccess文件中强制HTTP 1.0来解决问题:

SetEnv downgrade-1.0
Run Code Online (Sandbox Code Playgroud)

这摆脱了问题.但是,通过HTTP 1.1强制HTTP 1.0不是一个合适的解决方案.

更新:因为我是唯一一个遇到此问题的人,我认为我需要花更多的时间来调查它是否是客户端问题.如果我进入Chrome的设置并使用"恢复默认设置"选项,问题将消失大约10-20分钟.然后它返回.

php apache google-chrome chunked chunked-encoding

116
推荐指数
7
解决办法
19万
查看次数

Facebook爬虫正在努力击中我的服务器并忽略指令.多次访问相同的资源

Facebook Crawler每秒都会多次点击我的服务器,它似乎忽略了Expires头和og:ttl属性.

在某些情况下,它在1-5分钟的空间内多次访问相同的og:图像资源.在一个示例中 - 爬虫使用12个不同的IP地址在3分钟的过程中访问相同的图像12次.

在我发现以下示例之前,我只需要记录10分钟的请求:

一个映像的时间列表和爬网程序IP地址:

2018-03-30 15:12:58 - 66.220.156.145
2018-03-30 15:13:13 - 66.220.152.7
2018-03-30 15:12:59 - 66.220.152.100
2018-03-30 15:12:18 - 66.220.155.248
2018-03-30 15:12:59 - 173.252.124.29
2018-03-30 15:12:15 - 173.252.114.118
2018-03-30 15:12:42 - 173.252.85.205
2018-03-30 15:13:01 - 173.252.84.117
2018-03-30 15:12:40 - 66.220.148.100
2018-03-30 15:13:10 - 66.220.148.169
2018-03-30 15:15:16 - 173.252.99.50
2018-03-30 15:14:50 - 69.171.225.134
Run Code Online (Sandbox Code Playgroud)

根据Facebook的文档,og:图像是什么:

有人将内容分享到Facebook时显示的图像的URL.有关详细信息,请参阅下文,并查看我们的最佳做法指南,了解如何指定高质量的预览图像.

我在og:image中使用的图像的Expires标头将来设置为+7天.最近,我将此更改为+1年.两种设置似乎没有任何区别.爬虫似乎忽略的标头:

Cache-Control: max-age=604800
Content-Length: 31048
Content-Type: image/jpeg
Date: Fri, 30 Mar 2018 15:56:47 GMT
Expires: Sat, 30 Mar 2019 15:56:47 GMT …
Run Code Online (Sandbox Code Playgroud)

php facebook web-crawler facebook-graph-api

12
推荐指数
2
解决办法
2562
查看次数

ZMQ挂 - ZMQSocket :: send

我一直在用Ratchet测试PHP websockets,并且一切都工作正常,直到ZMQSocket :: send突然开始挂起,没有明显的原因.

$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'notify');
$res = $socket->send(json_encode($entryData)); //Hangs here.
Run Code Online (Sandbox Code Playgroud)

请注意,我可以使用ZMQ :: MODE_NOBLOCK,这将停止挂起,但它不能解决问题.即客户仍然没有收到任何东西.我也重新启动了我的盒子,这不能解决问题.

  • Ubuntu 12.04.1 LTS
  • PHP版本5.3.10 - FPM /(和推送服务器的CLI)
  • ZMQ扩展版本1.1.2
  • libzmq版本2.1.11

更新:我似乎通过将我的代码更改为:

$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_PUSH, 'notify');
$socket->setSockOpt(ZMQ::SOCKOPT_LINGER, 30); //ADDED
$socket->connect("tcp://localhost:5557"); //ADDED
$res = $socket->send(json_encode($entryData));
Run Code Online (Sandbox Code Playgroud)

现在的问题是,为什么它首先悬挂,当它工作正常一两个小时?有什么我需要注意的吗?

php zeromq ratchet

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

无法写入会话数据(memcache)

我注意到我们的Memcached会话处理程序出现间歇性问题.发生的错误是:

未知:无法写入会话数据(memcache).请验证session.save_path的当前设置是否正确.

笔记:

  • 对于不同的用户来说,这似乎是每天发生5到6次的间歇性问题.
  • Memcached不是localhost.即它与Web服务器位于不同的服务器上.
  • 我正在使用Memcache扩展(而不是MemcacheD扩展).
  • 我正在使用tcp前缀.如果你看一下这个问题,你会看到"修复"是在你使用Memcache扩展时把tcp://作为前缀.

我的php.ini设置:

session.save_handler = memcache
session.save_path = "tcp://64.233.191.255:11211"
Run Code Online (Sandbox Code Playgroud)

请注意,我也使用过:

session.save_path = "tcp://64.233.191.255:11211?persistent=1&weight=1&timeout=1&retry_interval=15"
Run Code Online (Sandbox Code Playgroud)

但这似乎并不重要.

检查了memcached.log文件,在那里我发现了以下错误:

写入失败,而不是由于阻塞:由对等方重置连接.

注意:此特定错误每天至少在同一时间(上午01:07)发生一次.然后它会在一天中偶尔发生.

php memcached

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

PDO:绑定时使用data_type的目的是什么?

可能重复:
Php PDO :: bindParam数据类型..它是如何工作的?

比方说,我有以下准备好的声明:

$sth = $dbh->prepare('SELECT `name` FROM `user` WHERE `user_id` = :user_id');
Run Code Online (Sandbox Code Playgroud)

我可以像这样绑定user_id参数:

$sth->bindValue(':user_id', $user_id_value);
Run Code Online (Sandbox Code Playgroud)

我仍然可以安全地接受SQL注入.

但是,bindValue()也是一个名为data_type的可选参数,它允许您设置显式数据类型.例:

$sth->bindValue(':user_id', $user_id_value, PDO::PARAM_INT);
Run Code Online (Sandbox Code Playgroud)

这允许我声明user_id将是一个整数.

我的问题是:为什么在使用或不使用SQL注入时可以安全地使用bindValue中的data_type参数?是否有强制数据完整性?如果您事先验证了数据,是否需要担心使用它?使用它还有其他任何我没想过的好处吗?

php mysql pdo

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