php基本设置之error_reporting


今天遇到了一个关于Warning: Trying to destroy uninitialized session的问题,顺便把php.ini里面关于这报错设置的这一段给弄清楚了!
display_errors = Off
默认应该是不显示errors的.
log_errors = On
把出错信息记录到web server的错误日志中.
error_reporting = E_ALL
自己定义错误日志中应该显示什么.
error_reporting 是可以在php文件中自己设置,或者.htaccess中设置的
如:
error_reporting(0);
error_reporting(E_ERROR | E_WARNING | E_PARSE); 等同error_reporting(7)
error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); 等同error_reporting(15)
error_reporting(E_ALL ^ E_NOTICE); 等同error_reporting(6135)
error_reporting(E_ALL); 等同error_reporting(6143)
那么error_reporting到底有多少种形式了
value constant
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
6143 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
详细的计算需要查手册,不过这些数字和*nix系统中的权限位是如出一辙的
其实没什么东西,只是记录下!
最后Warning: Trying to destroy uninitialized session 也只是
把session_destroy(); 修改为了 @session_destroy();


10个需要注意的mysql变量
mysql的性能需要我们监控,今天着重介绍十个比较重要的mysql变量.
原文来自http://blogs.techrepublic.com.com/opensource/?p=56,我并不觉得这10个变量都重要的值得去监控,但是也是必须去了解的!等以后我觉得有更重要的变量需要了解的时候,会再写下来的!今天找了好久才找到这篇文章的,本来那天看见就准备抄过来的,呵呵:)
1 Threads_connected
首先需要注意的,想得到这个变量的值不能show variables like 'Threads_connected';而是
show status like 'Threads_connected'(下面的变值也是这样的);
意思:变量的值是表示当前有多少个客户连接该mysql服务器
引申:连接数是否过多,网络时候存在问题!特别是在pconnect的情况下:)
2 Created_tmp_disk_tables
意思:在硬盘上建立的临时表数目
引申:如果这个值比较大的话,那么查询时需要建立临时表(CREATE TEMPORARY TABLE)的操作 就要消耗更多的时间
3 Handler_read_first
意思:读表索引的第一行
引申:如果这个值变化比较大的话,可以认为表索引建立的有问题,全索引的扫描操作比较多
4 Innodb_buffer_pool_wait_free
意思:This variable indicates the number of times MySQL has to wait for memory pages to be flus
引申:If this variable is high, it suggests that MySQL's memory buffer is incorrectly configured for the amount of writes the server is currently performing.
不了解这个:)
5 Key_reads
意思:读文件系统上面的索引的次数
引申:如果这个值太大的话,就需要考虑key cache设置是否正常了
6 Max_used_connections
意思:重起后到现在最大连接数
引申:服务器负载和可能需要调节的连接数
7 Open_tables
意思:当前打开的表的数目
引申:如果这个值很低,table cache很大,则减小table cache的设置是没有问题的,如果这个值很大,并接近了table cache的值,我们就需要加大talbe cache的设置
8 Select_full_join
意思:全连接的查询数目
引申:数值过大,需要建立更多的索引来避免
9 Slow_queries
意思:慢查询的数目
引申:过大的话就要察看慢查询的日志,并且检查sql语句书写是否恰当
10 Uptime
意思:运行时间,单位秒
引申:This value is useful to analyze server uptime, as well as to generate reports on overall system performance. A consistent low value indicates that the server is being frequently restarted, thereby causing frequent interruptions to client service.

总算翻译的大差不差了:)


使用telnet浏览网页
最近一直在学习mysql,把其他事情给耽搁了!
重点记一下怎么用telnet来测试网页的一些性质,虽然现在用firebug,curl,wget等等简单易用的工具来测试网页是否被压缩和是否被缓存!但有时还是不能避免的使用telnet这样原始的工具来做一些简单的测试!
其实如果了解rfc2616协议,也就是http协议的话,使用起来就不陌生了!
可是像我们这些习惯使用工具的人来讲,有时候不免会忘记!在这里记一下,毕竟我google了1好一阵也没找到!
先ping 下www.douban.com ip为59.151.41.69 80 (为什么不测试sina,163呢?他们前端有专业的防火墙等设备,直接telnet 上去似乎有问题)
telnet 59.151.41.69 80
Connected to 59.151.41.69 (59.151.41.69).
Escape character is '^]'.
GET / HTTP/1.1
Host: www.douban.com

两下回车就可以返回我们需要的内容! GET 后面的地址一般是index.html 或者index.php等等,可douban的不晓得默认页面用的萨,所以就直接GET /了。
抓douban的头的时候意外的发现X-Mem-Hit by mem-cache-etag,google了下,发现是lighttpd的一个小插件。
用telnet基本的读取网页的能力有了,我们在近一步读取压缩过后的网页
在Host: www.doban.com回车后
继续键入Accept-Encoding: compress, gzip 并两下回车,我们就能得到天书(压缩过后的html)。
累了,其他的更过参数可以从http协议中找到!
这样用telnet,就能更好的去了解协议本身了。

服务器时间同步(一)
很多时候由于安装系统时候的不在意,或者服务器本身频率的问题,会导致服务器之间时间的不同步!
时间不同步造成的影响,squid,mysql出现问题!这些都与系统时间有这紧密的关系!
1.squid中cache出现问题
2.mysql中系统时间出现问题
通常解决的办法
同步时间
/usr/bin/rdate -s rdate.darkorb.net
clock 或者 hwclock -w 写入cpu 或硬件里面
问题:clock 和hwclock的区别
用rdate只能治表不能治本
治疗时间问题的根本是: set the system time from the hardware clock,把系统时间写入硬件中!
鸟哥这篇文章可以好好的参考参考
归纳一下别人的方法
linux调整系统时间和时区的方法(redhat 系列)

1) 找到相应的时区文件 /usr/share/zoneinfo/Asia/Shanghai

用这个文件替换当前的/etc/localtime文件。

2) 修改/etc/sysconfig/clock文件,修改为:

ZONE="Asia/Shanghai"
UTC=false
ARC=false (这个不太清楚,但应该是没什么用处的)

3) 同步时间并写入cmos

关于PHP--session的问题集锦解决方案
PHP的session功能,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。
    
   1.
   错误提示
   Warning: Cannot send session cookie - headers already sent
   Warning: Cannot send session cache limiter - headers already sent
   分析及解决办法
   这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的session_start()调到程序的第一行。
    
   2.
   错误提示
   Warning: open(F:/689\php\sessiondata\sess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
   分析及解决方法
   出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为
   session_save_path = c:\temp
   session.cookie_path = c:\temp
   然后在c:\目录下建立一个temp目录,即可
    
   3.
   错误提示
   Warning: Trying to destroy uninitialized session in
   分析及解决方法
   出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用session_start()开启session的功能。
    
   4.问题:怎么获得当前session的id值呢?
   最简单的方法是:
   echo SID;
   你会发现的。
    
   5.问题:我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢?
   答:或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!但是你是否用光标键在?>这个PHP代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。
   注:此问题,会出PHP4.1.2中,更高版本,没有测试过。
    
   6.问:用session做登录主页面后,其它页面怎么用session限制登录。。。
   答:最简单的方法是
   session_start();
   if(!session_registered(\'login\') ││ $login != true) {
   echo \"你没有登陆\";
   exit;
   }
    
   7.问:我用session_register()注册了session变量,可是当我用header或用javascript的重定向语句,那么在一下页面中,我却访问不到session所注册的变量值。请问如何解决?
   问题的程序片段:
       session_start();
   $ok = \'love you\';
   session_register(\'ok\');
   header(\"location : next.php\");
   ?>
    
   next.php
       session_start();
   echo $ok;
   ?>
    
   解决的方法:
   当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因,至今仍没有一个详细的回答。
   不过有解决的方法。如下所示
   header(\"Location: next.php\" .\"?\" . SID);
   在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。
    
   8.session如何传数组
   session_register(\'data\');
   $data=array(1,2,3,4);
    
   方法是先注册后赋值
    
   9.问题9:我是不是可以用像$HTTP_GET_VARS[\'**\']方式来访问session值呢?
    
   回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性
   $HTTP_SESSION_VARS
   $_SESSION
   例程:
       session_start();
   $username = \'stangly.wrong\';
   session_register(\'username\');
    
   echo $HTTP_SESSION_VARS[\'username\'];
   echo \'
   \';
   echo $_SESSION[\'username\'];
   ?>
   请参照此例程修改符合您自己的程序。
    
   问题10:session_unregister() 和 session_destroy() 有何区别?
   session_unregister()函数主要作用是注消当前的一个session变量。不过要注意的是,如果你用$HTTP_SESSION_VARS或$_SESSION在当前页面中引用过session变量,那么你可能需要和unset()配合 来注消session变量。
   而session_destroy()是清除当前的session环境。意思就是说,当你用session_destroy()函数后,那么你就不可能再用session_is_registered()来检测session的变量了。但是需要注意的是他不能清除global中的session或使用了session cookie的中的session.所以在用session_destroy之前,最好不要用$HTTP_SESSION_VARS $_SESSION来访问session.(译自于php.net)
    
   例程:
   if(isset($_COOKIE[session_name()])) {
   session_start();
   session_destroy();
   unset($_COOKIE[session_name()]);
   }
    
    
   以上,所述是一些新手经常遇到的问题。或许是详述不清,难免有误所在,请高手指点批评。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值