UC 整合 PHPDISK 加检查和调试方法+补充uc socket通讯小bug

最近朋友要个网盘,因为他有个无限空间和无限流量的服务器架设论坛。

他说,迅雷和华为这些奸商都等用户有了浏量之后就开始收费了。所以流量大的草根要注意。
phpdisk的搭建也是傻瓜式的,就不多说了。
主要的配置问题,详见:

http://faq.phpdisk.com/phpdisk-connect-discuz-uc-13-view.html

注意个东西
uc_clientdatacacheapps.php
是否有你新建的app的数据,没有,复制上面的进行修改。正式机没事,但本地搭建过成中没有生成,导致通讯异常。
通讯流程见:

 

uc_clientclient.php :

function uc_user_synlogin($uid) {
	$uid = intval ( $uid );
	if (@include UC_ROOT . './data/cache/apps.php') {
		if (count ( $_CACHE ['apps'] ) > 1) { // 这里如果没有检查到,就不会去调数据哈
			$return = uc_api_post ( 'user', 'synlogin', array (
					'uid' => $uid 
			) );
		} else {
			$return = '';
		}
	}
	return $return;
}

 

关于正式机的调试和服务器的内部通讯调试.

因为在调试过程,总有不想让别人看和自己又必须得看到的数据。我就喜欢搞成这样子

if($_GET[‘test’]===’true’)//别人测试指定参数

if($_G[‘uid’]===’o’)//指定uid

这样游客就看不了啦。当然,搞完了一定要记得清楚这些小地方。

关于服务器内部通讯的调试,比如,client调server,他server怎么执行呢。

其它相关的操作。可以用 file_put_contents(time().”.txt”,var_export(array()));来记录相关的操作和信息,类似日志。这样就搞定内部通讯了。

uc通讯的一个小bug.

/uc_client/client.php:function uc_fopen

fsockopen 这个函数本身没有问题,主要问题是,uc在安装的时候,是使用公网的ip的,也就导致通讯过程中,正常是访问不了一些操作的囧~~!

像中国的sp商那些贱人一样,一出现错误页面,很喜欢给你弹到广告去。

问题来了

大家看看可爱的

/uc_client/client.php:function uc_user_synlogout

有没有,直接就把返回给返回了,竟然没有协商下过滤的。。

这样就把类似广告的东西直接当页面给加到登录和退出时的消息框里的,草根那个心急如焚呐~~~G (  ̄ ( 工 )  ̄ ) P。

坑爹啊,查到这里,哥分离脚本,一个参数一个参数的检查。。。。如此如此,这般这般。。

解决方式:

1.在uc的设置里,使用自家的独立ip。

2.在uc的设置里,取消ip,让uc访问域名(这个我没试,有兴趣的瞧瞧。代码就这么写的。出事别找我Y(^_^)Y)

if (function_exists ( 'fsockopen' )) {
	$fp = @fsockopen ( ($ip ? $ip : $host), $port, $errno, $errstr, $timeout ); // 是吧
} elseif (function_exists ( 'pfsockopen' )) {
	$fp = @pfsockopen ( ($ip ? $ip : $host), $port, $errno, $errstr, $timeout );
} else {
	$fp = false;
}

 

3.反馈bug,让uc在安装或设置的时候,检查下socket的通讯。。

注:要下载和原ucenter统一的编码,虽然pd可以指定,但是会造成通讯两边不正常的问题。如pd可同步,但是dz那边却无法同步。

解决方法:下载同编码的进行覆盖,再将system/install.lock文件进行删除,重装。

 

 

转发请注明出处http://blog.martoo.cn
如有漏缺,请联系我 QQ 243008827

发表评论

电子邮件地址不会被公开。 必填项已用*标注