PHP 调试和异步调试工具类

function gddebug() {
	$arrays = func_get_args ();
	echo "n<pre>";
	foreach ( $arrays as $value ) {
		if (is_array ( $value ) || is_object ( $value )) {
			ksort ( $value );
			echo htmlspecialchars ( print_r ( $value, true ) ) . "rn";
		} elseif (is_string ( $value )) {
			echo "string(" . strlen ( $value ) . ") "" . htmlspecialchars ( $value ) . ""rn";
		} else {
			var_dump ( $value );
		}
	}
	echo "</pre>";
}

 

异步调试工具类

function gdsyndebug() {
	$arrays = func_get_args ();
	$filename = dirname ( __FILE__ ) . "/gdsyndebug.txt";
	file_put_contents ( $filename, "===================" . date ( "Y-m-d H:i:s" ) . "====n", FILE_APPEND );
	file_put_contents ( $filename, 'url http://' . $_SERVER ['HTTP_HOST'] . $_SERVER ['PHP_SELF'] . "n", FILE_APPEND );
	foreach ( $arrays as $value ) {
		if (is_array ( $value ) || is_object ( $value )) {
			ksort ( $value );
			file_put_contents ( $filename, print_r ( $value, true ) . "n", FILE_APPEND );
		} elseif (is_string ( $value )) {
			file_put_contents ( $filename, "string(" . strlen ( $value ) . ") "" . $value  . ""n", FILE_APPEND );
		} else {
			file_put_contents ( $filename, var_export ( $value, true ) . "n", FILE_APPEND );
		}
	}
}

 

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

PclZip 操作及文件授权+设置用户,用户组

经常出现这种窘境,在公司上传东西的时候,需要传个easyui目录..再加个yiiframework哩。而且服务器没有linux的操作权限,zip的扩展也是没有的时候…如果以上都不是问题就跳出去吧呵呵。

http://www.phpconcept.net/pclzip/user-guide/18

这时肯定要将代码压缩下,传压缩包再通过代码去解压。

	
	//普通的打包操作
	$path = dirname ( __FILE__ ) . '/fw.zip';//目标zip
	require_once (dirname ( __FILE__ ) . '/pclzip.lib.php');
	$archive = new PclZip ( $path );
	$archive->create ( "fw" );//当前需要打包的目录
	if ($archive->extract () == 0) {
		die ( "Error : " . $archive->errorInfo ( true ) );
	}

 

	//打包指定目录,然后移除目录前缀
	$path = dirname ( __FILE__ ) . '/fw.zip';
	require_once (dirname ( __FILE__ ) . '/pclzip.lib.php');
	$archive = new PclZip ( $path );
	$archive->add ( "C:/ooxx/ooxx/htdocs/test/zip/fw", PCLZIP_OPT_REMOVE_PATH, "/ooxx/ooxx/htdocs/test/zip/" ); // 压缩);
	if ($archive->extract () == 0) {
		die ( "Error : " . $archive->errorInfo ( true ) );
	}
	//普通的解包
	$path = dirname ( __FILE__ ) . '/fw.zip';
	require_once (dirname ( __FILE__ ) . '/pclzip.lib.php');
	$archive = new PclZip ( $path );
	if ($archive->extract () == 0) {
		die ( "Error : " . $archive->errorInfo ( true ) );
	}

看一送一,因为解压后的特殊原因,权限是只有应用的,如果ftp操作肯定是不行滴

//迭代授权,这样就绝配了。
function chmod_R($path, $filemode) {
	if (! is_dir ( $path ))
		return chmod ( $path, $filemode );

	$dh = opendir ( $path );
	while ( $file = readdir ( $dh ) ) {
		if ($file != '.' && $file != '..') {
			$fullpath = $path . '/' . $file;
			if (! is_dir ( $fullpath )) {
				if (! chmod ( $fullpath, $filemode ))
					return FALSE;
			} else {
				if (! chmod_R ( $fullpath, $filemode ))
					return FALSE;
			}
			// echo $fullpath."<br>";
		}
	}
	closedir ( $dh );

	if (chmod ( $path, $filemode ))
		return TRUE;
	else
		return FALSE;
}

 

//用户和用户组的设置
function recurse_chown_chgrp($mypath, $uid, $gid) {
	$d = opendir ( $mypath );
	while ( ($file = readdir ( $d )) !== false ) {
		if ($file != "." && $file != "..") {
			$typepath = $mypath . "/" . $file;
			// print $typepath. " : " . filetype ($typepath). "<BR>" ;
			if (filetype ( $typepath ) == 'dir') {
				recurse_chown_chgrp ( $typepath, $uid, $gid );
			}
			chown ( $typepath, $uid );
			chgrp ( $typepath, $gid );
		}
	}
}

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

AR 使用其它数据库进行操作

config.php里加多配置

'db2'=>array(
			'class'=>'CDbConnection',
		),

AR中覆盖方法,设置其它的数据库

特别需要注意 $odb这个独立的处理,否则在连续操作的过层中,会有数据库链接变量冲突的相关问题。

	public  static $odb=null;
        public function getDbConnection()
	{
		if(self::$odb!==null)
			return self::$odb;
		else
		{
			self::$odb=Yii::app()->getComponent('db2');
			if(self::$odb instanceof CDbConnection)
				return self::$odb;
			else
				throw new CDbException(Yii::t('yii','Active Record requires a "db" CDbConnection application component.'));
		}
	}

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

百度编辑器小记

不用多说了,直接上链接。

http://ueditor.baidu.com

强悍的截图,对于有需要,但又没资源做这类插件的…

配置相关:

相对于常见mvc.脚本的引用通常不是同级目录的,编辑的配置需要留意的地方有

1.ueditoreditor_api.js

baseURL//脚本的引用

2.ueditor/editor_config.js

window.UEDITOR_HOME_URL //插件目录配置

snapscreenHost: location.href.replace(/^http://([^/]+)/.*/,'$1') //截屏的服务器配置。
langPath:URL +"lang/" //语言包,默认被注释
themePath:URL +"themes/" //样式包,默认被注释