随笔分类 - PHP
摘要:最近开始在看discuzx3.1的代码,看到数据库层的实现,discuzx的数据库层能够支撑数据库分库,分布式部署,主要水平分表,也可以很方便的支持其他数据库。性能上,可以做读写分离,支持数据缓存。可以说,是一个很完善的数据库层的解决方案了。数据库层分为三层,业务逻辑层封装,抽象层,和驱动层。如图:其中,数据抽象层封装定义数据库操作,负责解析sql语句,连接底层驱动执行sql,并数据安全过滤。数据库抽象层由discuzx_database类实现,该类所有的成员变量和方法都是静态的,可以直接调用。本类中,init 方法用来初始化底层驱动,设置数据库配置,并且建立默认的数据库连接。table方法,
阅读全文
摘要:最近在做UCenter的开发,把我们一个网站与UCenter做整合,在这个整合之前,看到UCenter的介绍,觉得如果按照官方的介绍来 看,简直是我们这些不愿意单独开发CMS及BBS的网站的福音。但是在开发的过程中,却看到了UCenter的种种的缺陷,这些缺陷当然不能怪 Discuz,我也都想了些办法来解决,但是对于一个成熟的商业系统来说,Discuz的开放性,还有很长的路子需要走。目前UCenter定位自己就是用户中心,但是一个真正的用户中心,他的工作却不是称职的。我觉得盛康应该讲UCenter把自己定位为一个与康盛旗下产品整合的一个桥梁,而不要试图越俎代庖的想替代动易、PHPCms做用户管
阅读全文
摘要:1、用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和password进行验证。2、如果验证成功,将调用位于uc_client下client.php文件中的函数uc_user_synlogin,在这个函数中调用 uc_api_post('user', 'synlogin', array('uid'=>$uid))。3、然后这个函数后向Ucenter的index.php传递数据,index.php接受传递的数据,获得model为user,action为
阅读全文
摘要:: 'one', 'sex' => 'two', 'test' => array('a' => 'ss', 'dd'), 'old' => 'three' ); $arrayobject = array2Object($array); echo $arrayobject->name; // one print_r(object2Array($arrayobject)); */ function array2Object($
阅读全文
摘要:失败是常见的。 对于初次接触Ucenter的人来讲,添加一个自己的应用最头疼的就是发现通信失败。如果要解决这个问题,首先要了解Ucenter是如何和应用进行通信的。只有知道了Ucenter和应用之间如何通信,我们才能找到通信失败的原因。那让我们从源头找起吧!如果用火狐来辅助查找通信失败的源头会更加简单一些【我可不是给火狐做广告啊!它真的是太好用了】。我们先来看看是谁输出了通信失败四个字:在火狐中右键->本帧->查看帧源代码【注意,要在“通信失败”附近】。如图:然后在源代码中查找应用访问地址。找到通信失败所在位置。请注意,通信失败四个字是有js生成的。直接查找通信失败是找不到的。认真
阅读全文
摘要:判断时效可以:$sessionpath=session_save_path();$user_sessionfile=$sessionpath."/sess_".$db_user_sessionid;$activetime=file_exists($user_sessionfile)?intval(filemtime($user_sessionfile)):0;if(time()-$activetime>30*60){//30分钟的时效//登陆}然后在用户每次活动时,在页面里都写上:$_SESSION['activetime']=time();//确保每
阅读全文
posted @ 2014-03-03 11:31
我是鸡蛋
摘要:【概述】Redmine是一个Web上的灵活的开源项目管理工具,基于Ruby on Rails框架,跨平台和数据库。它具备了广泛的项目管理平台特点同时,还提供了诸多的独有的特性。包括了内建的wiki、BUG问题跟踪、SVN集成等。Redmine可以使用BitNami的一体化安装包,这会使得安装部署redmine一键到底。这个不太适用于公司,自己玩玩还行。本文讲述了Redmine的安装,与Apache集成,与SVN集成,邮件配置,备份。【环境】Ubuntu10.10【Redmine安装配置步骤】1. 安装LAMP环境apt-get install taskseltasksel install la
阅读全文
posted @ 2013-11-21 15:19
我是鸡蛋
摘要:fopen()方法最简单的方法就是用fopen(),看看文件能否打开,能打就文件当然就存在。fopen() 函数打开文件或者 URL。如果打开失败,函数会返回 FALSE。语法:fopen(filename,mode,include_path,context)参数描述filename必需。规定要打开的文件或 URL。mode必需。规定要求到该文件/流的访问类型。可能的值见下表。include_path可选。如果也需要在 include_path 中检索文件的话,可以将该参数设为 1 或 TRUE。context可选。规定文件句柄的环境。Context 是可以修改流的行为的一套选项。mode 参
阅读全文
摘要:.*|/' //HTML标记'/(`\s*)|(\s*$)/' //首尾空格'/(\d+)\.(\d+)\.(\d+)\.(\d+)/g/' //IP地址'/\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/' //email'/http://(/[\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?/' //url'/^-?\d+$/' //整数'/^\d+$/' // 非负整数'/^[0-9]*[1-9][0-9]*$/
阅读全文
摘要:今天有个小web需要php环境运行,为了配置,下了番苦功!终于可以显示了:我们知道php配置有几种:1、CGI方式加载PHP环境,通常就是IIS里面配置解释器为php.exe,早期比较常见,目前使用较少。 特点是:稳定,但效率太低。 2、ISAPI方式加载PHP环境,通常就是IIS里面配置解释器为php5isapi.dll,目前使用最多,应用最广。 特点是:多线程,效率较高,但不够稳定。 3、FastCGI方式加载PHP环境,在IIS环境里并不常见,但其它系统环境应用还是有的,不过IIS7.0开始内置FastCGI了。 特点是:高效率,高稳定性,属于将来发展趋势。我试过其他的特别麻烦,PHP
阅读全文
摘要:公司项目关系,要求在通过PHP解析android系统应用apk包内的一切可用的信息。比如说:APK包名,版本号,版本名,安装权限等一系列关于对应包的信息。通过google查找相关的解决方案,都没有找到很有效的解决方案。但取得了解决此问题的思路。目前就我所了解,有二种方案:第 一:通过安装PHP-JAVA-Bridge桥接方式,让PHP环境下可以执行JAVA。通过JAVA去解析APK包内的 AndroidManifest.xml文件,通过解析出来的XML可以取得上面所提到的相关信息。第二:在服务器上安装android-apktool 工具,通过aapt命令直接去解析apk包的信息。有了相关思路,
阅读全文
摘要:PHP 是动态网站开发最常使用的编程语言之一。PHP 相当强大和有效,并且还十分简单,对于初学者,因为该语言的灵活性,它将是一个不错的语言学习选择。单独从语言角度而言,PHP 是一门不错的语言(尤其在与 XHTML 结合使用时)。但是,大多数应用程序需要一种简便的数据存储方法,通常由数据库(比如 MySQL 或 PostgreSQL)实现。为了链接到数据存储系统,连接器需要允许使用 mysql_query() 和 pg_query() 之类的函数。大多数情况下,这种方法是有效的,但是偶尔地,因为业务需求,可能会要求将数据存储在更容易被人操作的电子表格之类的地方。在这些情况下,需要使用不同类型的
阅读全文
摘要:urlencode可以解决下载文件名中文乱码问题, 但有时如果文件名含有空格字符, urlencode编码后的字符串会出现加号,故需要将空格去掉!而有一种方法可以不把空格去掉,需要在输出文件名时把+替换成%20,即可以得到正常的文件名了!$file = "例 子example 1.rar";$realname = "例 子example 1.rar";$realname = str_replace(" ","",$realname); //去掉英文空格$str=str_replace(chr(32),"&
阅读全文