PHP实现捕获程序中的所有错误
PHP的错误等级分为notice,warning,还有error以及用户自定义错误。对于用户自定义错误本身就是用户触发的错误,当然不存在捕获的问题。对于另外的三类错误的捕获,我们当然能想到set_error_handler(array('Exception','errorHandle'));方法来设置使用某一个方法来显示错误,但注意看一下手册,手册上有提示:以下级别的错误不能由用户定义的函数来处理:E_ERROR、E_PARSE、E_CORE_ERROR、E_CORE_WARNING、E_COMPILE_ERROR、E_COMPILE_WARNING,和在调用set_error_handler() 函数所在文件...[>>…]
使用redis时尽量使用hashget/hashset,少用get/set?
网上多有评论说hashget/hashset的效率比get/set高,并建议在使用redis时尽量使用hash,少使用get/set的键值。这里有一段简单的对比hashset和set的性能比较,各执行1000次的数据插入: $redis=newRedis(); $redis->connect('127.0.0.1','6379'); $char=''; //set $t=microtime(true); for($i=0;$i<1000;$i++) { $key.=rand().rand(); $redis->set($key,$key); } $cost=microtime(true)-$t; echo$cost.'<br>'; //hset $t=microtime(true); for($i=0;$i<1000;$i++) { $key.=rand().rand(); $redis-...[>>…]
PDO10054错误:远程主机强迫关闭了一个现有的连接
在使用PHP连接MYSQL时,是不是偶尔会碰到10054错误:远程主机强迫关闭了一个现有的连接,以及MySQLserverhasgoneaway,问题其实不复杂。 首先这个问题出现的原因是:在连接数据库时使用了长连接,并且长连接很长时间没有再被使用从而被MYSQL关闭(我这里都用PHP使用PDO连接MYSQL示例)。这个时间有多长,可查看MYSQL里的配置项:wait_timeout,其默认值为28800秒(8小时),一般建议使用长连接,在PHP使用PDO连接MYSQL数据库时,使用newpdo($dsn,$username,$pass...[>>…]
scandir() has been disabled for security reasons
开发过程中如果遇到了某某函数因为安全原因被禁用,例如:scandir()hasbeendisabledforsecurityreasons,则是因为PHP的ini配置中的disable_functions里面有这个函数,解决方法你当然可以去修改php.ini的设置,也可以把这个敏感函数替换成其它的函数或自构方法。 因为之前我提前目录时一直使用opendir和readdir方法,在翻看百度的底层系统代码时看到了一个函数scandir,发现挺好,可以省下不少事,但放在我的阿里云里报了上面错误,很明显被禁用,不过被禁肯定有...[>>…]
linux查日志时常用的tail命令[转]
查看服务器日志时常用的命令: NAME(名称) tail-输出文件的末尾部分 SYNOPSIS(总览)../src/tail[OPTION]...[FILE]... DESCRIPTION(描述):在标准输出上显示每个FILE的最后10行.如果多于一个FILE,会一个接一个地显示,并在每个文件显示的首部给出文件名.如果没有FILE,或者FILE是-,那么就从标准输入上读取. --retry即使tail开始时就不能访问或者在tail运行后不能访问,也仍然不停地尝试打开文件.--只与-f合用时有用. -c,--bytes=N输出最后N个字节 -f,--follow[={namedescriptor}]当文件增长时,输出后续添加的数据;-f...[>>…]
大型网站架构里都需要哪些种类的服务器[转]
1、web服务器:最常见,内存要求不是很高但cpu要求较高,主要用于部署各种web应用,如带界面的web页面、不带界面的web服务等等。 2、数据库服务器:主要用于存储和查询数据。数据库已是各种系统实际上的标配,内存和CPU都要求极高,网络和硬件要求也不低。大中型网站还需要支持数据库的主从备份和容错,甚至多实例的数据库集群。通常,大中型的互联网应用会经历一个从单一的数据库服务器,到Master/Slave主从服务器,再到垂直分区(分库),然后再到水平分区(分表,sharding)的过程。而在这个过程中,Master/Slave...[>>…]
运行两redis实例试验redis服务器主从模式
之前曾经在项目开发中大量使用REDIS作数据缓存,不过因为并发量还不够大,未在主从模式下开发过业务,不过之前看到相关的文档,主坐配置其实很简单,和MYSQL主从同步的原理差不多,Redis主坐同步的内在原理就是以下5个步骤: (1)Slave服务器连接到Master服务器. (2)Slave服务器发送SYCN命令. (3)Master服务器备份数据库到.rdb文件. (4)Master服务器把.rdb文件传输给Slave服务器. (5)Slave服务器把.rdb文件数据导入到数据库中. 接下来在Master服务器上调用每一个命令都使用replicationFeedSlaves()来同步到Slave服务...[>>…]
今天晚上把这小站所用框架升为2.0
这几天将这个网站所使用的框架升级重写为2.0框架了,重申一下,这个站是用自己写的小框架开发的,只是为了实践我的这个框架而已,毕竟写个框架没有网站使用,没法知道它是否能正常运行呢,所以才有了这个小站,我希望今后的某一天我能有自己的产品,并且是使用了自己的框架的产品,所以我会一直前行。 在将框架由1.0升为2.0的过程中,确实是费了不少心思。实际我之所有想把框架升级重写,一是因为最近一年以来又见识了一些公司的框架,觉得我写的这个框架还得。特别是百度内...[>>…]
计算机为什么用补码运算-补码运算的加减乘除
计算机的设计真是精妙,最近看了一些原码、反码、补码的东西,对于使用补码计算能得出正确结果感到非常吃惊,但又总觉得里面是有其内在可依赖的逻辑。本文是在网上看到了一个钟表例子后我的一些思考,并进行一些理解的整理。 先列点原码、反码、补码的相关东西: 原码:原码就是数字的二进制码,比如3的原始就是00...011 反码:反码是就原码而言的,规则是正数的反码是其本身,负数的反码符号位不变,其它取反, 补码:补码是在反码上加1 假设我们要进行一...[>>…]
PHP的运行方式-PHP SAPI-php_sapi_name()
SAPI:ServerApplicationProgrammingInterface服务器端应用编程端口。它就是PHP与其它应用交互的接口,PHP脚本要执行有很多种方式,通过Web服务器,或者直接在命令行下,也可以嵌入在其他程序中。SAPI提供了一个和外部通信的接口,常见的SAPI有:cgi、fast-cgi、cli、isapi、apache模块的DLL。如下:我们写一下很简单的脚本: <?php echo'PHP_SAPI:'.PHP_SAPI; echo"rn"; echo'php_sapi_name:'.php_sapi_name(); ?> 然后在浏览器中以WEB形式访问,会看...[>>…]