| Issue 40: | FreeWebHostingArea测试成功,期待代理连接功能 | |
| 1 person starred this issue and may be notified of changes. | Back to list |
感谢写出支持socks5的好程序。
FreeWebHostingArea这个免费空间上测试成功。
phpsocks5确实给力,
其他用作代理的程序对PHP空间的要求很高一般。
就是少了通过代理服务器连接php空间的功能,期待中。。
因为能申请的PHP空间很多都被墙了,不支持代理难找到合适的,一般用户试了一个空间不成功估计就放弃了。
这样phpsocks5的通用性大打折扣。sockscap好像又不支持java程序。。
看到源码里有.cpp和.h,不知是否是有C的版本?那个应该支持sockscap。
个人认为项目里先加上个直接走socks代理的版本,就可以满足绝大部分人的需求,口令,NTLM认证可以放到下一步。类似这样:
proxyHostName="127.0.0.1";
proxyPort="9050";
System.getProperty("socksProxySet",true);
System.getProperty("socksProxyHost",proxyHostName);
System.getProperty("socksProxyPort",proxyPort);
Aug 19, 2011
有心无力啊,没那个技术。 php表示完全不行,只能是看到优秀项目就来观望支持一下。 https://code.google.com/p/goagent/ 话说goagent项目也开始在支持ntlm代理了。。
Aug 19, 2011
其实支持代理功能只需要改Java客户端就可以了,不需要改php。 看你给出的代码应该和实际需要修改的代码差不多,不知道你会不会Java?
Aug 19, 2011
能看懂几行代码,多了就无力,不懂技术就是比较杯具啊。 运行时在java后面加上参数貌似就能走http代理了: java -Dhttp.proxyHost=localhost -Dhttp.proxyPort=8080 另外,不知是不是原理上是操作数据库的原因, 我这测试貌似phpsocks5很容易触动主机空间的保护机制似的, 好像用一会就不太稳定了,只能删除数据库的那几个表,重新建一次。 有可能是本机ip被拒绝连接。
Aug 19, 2011
从1.5开始,http和https要分别设置代理,还要加上 -Dhttps.proxyHost=localhost -Dhttps.proxyPort=8080 不稳定的时候,能否把log(客户端和服务器端的)发上来分析一下?
Aug 20, 2011
选择国内不被墙的网站baidu和ip123测试,顺利打开并看到ip123显示了php主机的IP,
之后如果再打开个有图片的如推特或者淘宝就不行了,再打开ip123已经打不开了。
反复测了几次,基本就是开始成功一会,后来就会http返回码500或者502。
这时用我的ip已经无法浏览器访问我建的php空间首页了,挂上一个国内代理又可以打开,说明不是被墙而只是拒绝我的ip访问。
而且这时用java -Dhttp.proxyHost挂代理,phpsocks5又可以使用。说明确实是ip被拒绝。
或许是phpsocks5访问socks5.php过于频繁,或者操作数据库过于频繁吧。好像是触发了主机的保护机制然后被拒绝访问。选择付费空间估计能解决,但这样通用性大打折扣了。
Aug 20, 2011
服务器的log
Aug 20, 2011
另外测试时打了sp1补丁。。
Aug 20, 2011
看了一下log,服务器500错很多都是因为不支持set_time_limit操作。 因为socks5协议需要在一个TCP连接内持续读取数据直到连接关闭,有时候这个TCP连接存在的时间会比较长(比如下载一个100MB的文件,可能1个TCP连接要持续10 - 20分钟,这样才能下载完成一个100MB的文件)。 但是,PHP默认规定一次HTTP请求30秒内没有结束,就会强制终止这次请求,这个限制可以通过调用set_time_limit进行更改。set_time_limit(n)设置了在执行了set_time_limit后的n秒内不会强行终止本次HTTP请求(比如本次HTTP请求已经执行了15秒,调用set_time_limit(30)后还要经过30秒才会被强制终止,等于把强制终止的时间推迟了15秒)。如果不断调用set_time_limit(n),那么可以不断延长本次HTTP请求被强制终止的时间,这样就可以延长HTTP请求被强制终止的时间。 然而,你的PHP空间禁止了调用set_time_limit,导致调用set_time_limit时出错。可以暂时去除调用set_time_limit的地方再次测试看看还会不会有问题。 可以在php文件中的第98行和第307行找到set_time_limit的调用,在98行和第307行的行首加上注释符(注释符为双斜杠://)使得不执行set_time_limit。改好PHP后重新上传到服务器上。 去除set_time_limit后,如果TCP连接超过30秒(比如下载大文件,或HTTP的长连接。HTTP的长连接通常被用于访问同一个域名下多个资源复用TCP连接)就会被强制断开连接。
Aug 20, 2011
辗转测试了多次,也换了好几个空间。现在一一汇报下结果。
前面用的免费空间realservers.info,不支持set_time_limit,
你上面讲的完全符合这个空间的情况,而且我访问.php建表的时候的确就提示了set_time_limit,但是因为建表成功,又能用,就忘了这个提示。现在一想的确是这样。
但是还是有些难以判断是否是主要原因,去掉调用set_time_limit后有改善,但是开几个网页后还是被禁IP,挂代理情况依旧。
这个主机有一个现象就是ftp连接有时都会停滞,比如在ftp删除一个文件,有时卡在那
这时立刻断开ftp连接,重连后马上恢复。
而phpsocks5代理时我说的不稳定,就类似这样,网页是停滞的。
既打不开,也不报502 drop connection,而是在刷新似的。但是关掉phpsocks5重新打开,还是这样。
发现服务器日志文件都似乎比较大,开几个网页就会产生4到6M。
在服务器上产生这样的日志会不会对主机服务器造成压力,触发它的保护机制什么的呢?
虽然觉得不稳定问题完全在于这个空间的某些限制什么的,不过要是phpsocks5也能针对这类空间优化下连接什么的就好了,可以提高通用性。毕竟很难期待大部分用户有能力和耐心申请多个空间并部署测试。
这是探针:http://zhagen2.realservers.info/phptanzhen.php.php
从探针上看有一些禁用的函数。
不过该空间测试似乎能够运行apjp。
这是日志
Aug 20, 2011
还有一个空间,已经被墙,也类似上面,不过用探针查set_time_limit函数未被禁用,
日志也没有报这个warning。
java -Dhttp.proxyHost挂代理开几个网页成功,后来打不开新的网页,
然后首页浏览器访问都会提示出错,提示Internal Server Error。
用ftp还有一个现象,服务器日志phpsocks5_log似乎一直在产生,删掉了还有。有点奇怪。
不过这也完全不具有普遍性,也可能只是空间个例。这个空间反馈基本可以忽略,仅供参考。
Aug 20, 2011
另外测试了这个空间Primegalactic.
phpsocks5完美运行,日志也有很多返回码500,但确实正常运行,无论是用本地ip还是java -Dhttp.proxyHost挂代理都好用。
可以推荐给广大一般用户使用,
希望这种免费空间能一直运营下去吧。日志有20M就不传了。
探针http://174.136.63.6/~zhagenco/phptanzhen.php.php
从探针上看没有禁用的函数,也不知能否总结出这类空间的规律。
标题这个FreeWebHostingArea现在发现好像上传php探针就会被禁用账户,而且不是人工而是自动被禁用,很奇怪。不建议其他用户注册,也没有再用作测试。
Aug 20, 2011
首先,服务器端的log文件是用来调试的,调试完成之后就可以把服务器端的log关掉,具体做法参考首页( https://code.google.com/p/phpsocks5/ )中的一句话: 建议在调试成功后手动将php中的debuginfo参数设置为False,并删除服务器端的log文件。debuginfo参数的具体意义可以参考Wiki页中的parameter_list页。 apjp好像没有使用set_time_limit,所以下载大文件好像会有问题。 log文件我再看看,优化空间有一些,不过可能余地不大。 看了log后我再来反馈。
Aug 21, 2011
下载大文件是会有问题,而且apjp和同类程序,似乎在代理调度转换端口时, polipo,privoxy,3proxy,proxy switcher方式,其中总分别有一到几种方式是不支持的。 realservers.info我再争取找几个国内国外代理挂上测下,整理下发一两个log上来供补充参考。
Aug 21, 2011
分析了一下log,发现很多时候由于到达了mysql的最大连接数导致php部分不能正常工作。http://zhagen2.realservers.info/phptanzhen.php.php 这个空间的mysql最大连接数是多少? 由于php部分为了加快连接mysql,使用了mysql的持久连接mysql_pconnect,这样mysql连接一直不会释放,这样下一个http请求就可以复用上一个http请求的mysql连接而不必重新连接到mysql。不过这样也稍微加大了一些mysql的连接数。 尝试一下把php部分的mysql_pconnect改为mysql_connect(有很多地方用了mysql_pconnect,需要用文本编辑器查找替换一下,把所有mysql_pconnect的地方替换为mysql_connect),再试试看还有没有问题?之后能否再帮忙上传一下服务器和客户端的log?谢谢!
Aug 21, 2011
mysql_pconnect改为mysql_connect明显稳定时间有加长, 但用一阵子仍然会被拒绝连接。 换了一个可以测试mysql数据库的探针测试 这个探针是完美运行空间的 http://174.136.63.6/~zhagenco/config8nm.php MySQL数据库持续连接 支持 POST最大字节数 100M 允许最大上传文件 150M 这个是不稳定空间上运行探针 http://zhagen2.realservers.info/config8nm.php MySQL数据库持续连接 不支持 POST最大字节数 2M 允许最大上传文件 2M MySQL最大连接数探针上面都显示无限,但估计有误, 付费主机貌似都有限制在50到500的样子。 这是log (依次成功访问10来个网页之后被拒绝连接)
Aug 21, 2011
这是另一次
Aug 21, 2011
这是被拒绝连接后重启phpsocks5的这种情形的log。 基本是无连接
Aug 21, 2011
看了一下xxx3.rar和xxx4.rar的log,发现xxx3中你是用本地的privoxy代理的java客户端?而且set_time_limit好像又打开了,又看到很多set_time_limit被禁止的错误。 还有就是发现mysql的最大连接数最后还是超过了,虽然超过的时间比使用mysql_pconnect延后了。 最后就是发现似乎mysql超过了最大连接数之后,再去访问php的话,服务器会直接关闭连接,连http头都不会返回。规律似乎是一旦超过了mysql的最大连接数,那么最近访问最多的那个IP就会被服务器列入黑名单禁止访问一段时间。
Aug 21, 2011
本地privoxy是为了把SSH代理转换为http类型,方便代理java客户端。 恰好跟phpsocks5里的polipo一样,:-D 因为此时本地IP被禁止。改的时候一不注意用了之前的老版本所以set_time_limit又打开了。 重新关闭了set_time_limit现在。
Aug 21, 2011
还是因为mysql超过了最大连接数。 而且这个mysql连接数已经没有优化的余地了,访问一个网页需要有3个mysql链接。 如果不用mysql,又只能做到类似apjp那样,https就必须伪造证书了。
Aug 21, 2011
恩,这个空间个例确实把mysql连接数限制得过于严格了,相信这样吝啬的空间也不会很多,或许主机里什么地方可以修改最大连接数也不一定,不过目前还不太了解。免费空间不少,用武之地很多。真是了解了不少,感谢!
Aug 21, 2011
不客气。 ^_^
Dec 23, 2011
FreeWebHostingArea可以传探针,我的探针放了很久也没有问题http://bbstry.orgfree.com/tz.php realservers.info的空间是main—hosting,或者说是youhosting的空间,这系列空间都不行,而想这种10G、100G流量的空间基本都是他的,所以这种空间是不行的,很多cpanel空间都差不多是这种的,还有一种cpanel空间我找时间测试一下,vista panel空间我也测试一下,估计成功可能性不大
Dec 25, 2011
恩,谢谢楼上,了解了不少。有阵子没来了 |
Labels: -Priority-Medium--------------------------------83512873127617Content-Dispositionform-dataname-token1a10ad70505769b2a9a7a80603a9ed4f Priority-Medium