昨天晚上一个提交错误的问题折腾我到两点,可怜的。

表单输入的问题,jquery动态加入的input节点,form提交的时候没有附带上该input的项目,不知道怎么闹的,死活都不行,这个是其一。网上说的方式我也没有测试出正常的解决方式,所以作罢,没有继续用添加节点的方式。

另外一个就是字符串后面的^M字符的问题。这个可以导致nginx出现400的错误响应,没法处理该请求。

// if you are upset with windows' ^M characters at the end of the line,
// these two lines are for you:
$trans = array("\x0D" => "");
$text = strtr($orig_text,$trans);

// note that ctrl+M (in vim known as ^M) is hexadecimally 0x0D


这个处理方式最简洁了,可以试试,php手册上的例子
今天碰到此问题,有此例子:

<volist name="list" id="vo" key="n">
    <div id="tabs-{$n}">
        <volist name="vo['child']" id="child">
            <p><b>{$child.name}</b></p>
            <volist name="child['grandchild']" id="grand">
                <p style="line-height: 23px;">{$grand.title}</p>
            </volist>
            <br />
        </volist>
    </div>
</volist>
今天发现一段很好的代码:

function characet($data){
  if( !empty($data) ){    
    $fileType = mb_detect_encoding($data , array('UTF-8','GBK','LATIN1','BIG5')) ;  
    if( $fileType != 'UTF-8'){  
      $data = mb_convert_encoding($data ,'utf-8' , $fileType);  
    }  
  }  
  return $data;    
}


这个在于传中文参数的时候,由于编码不同,会发生乱码现象,当参数编码不一定是GBK的时候,那就不能都转换编码了
上面的好处是,判断编码,然后转换,和谐了
php的日志是值得关注的,包含错误日志和慢日志

一 错误输出

找到php.ini
log_errors = On

; Log errors to specified file.
error_log = /Data/logs/php/error.log


比如会捕获到类似信息:

[23-Oct-2011 17:17:41] PHP Fatal error:  Class 'Strclass' not found in /Data/webapps/www.aslibra.com/application/errors/error_404.php on line 11

这个有助于分析被访问的页面发生的致命错误或者是警告

二 慢日志

慢日志和数据库的慢查询有点类似,会记录下来执行超过多少时间的php执行的内容
这个如果是用fast-cgi的话,可以在fpm的配置里面有

      The timeout (in seconds) for serving of single request after which a php backtrace will be dumped to slow.log file
      '0s' means 'off'
      <value name="request_slowlog_timeout">10s</value>

      The log file for slow requests
      <value name="slowlog">/Data/logs/php/slow.log</value>


比如上面是记录超过10秒的php,记录在相应的文件里
你可以拿到类似的日志:

Oct 23 23:00:20.528849 pid 11586 (pool default)
script_filename = /www.aslibra.com/index.php
[0x00007fffae1869e0] mysql_query() /www.aslibra.com/system/database/drivers/mysql/mysql_driver.php:163
[0x00007fffae186bb0] _execute() /www.aslibra.com/system/database/DB_driver.php:453
[0x00007fffae186eb0] simple_query() /www.aslibra.com/system/database/DB_driver.php:299
[0x00007fffae1870b0] query() /www.aslibra.com/v3/models/myuser.php:51
[0x00007fffae1872a0] get_users_by_uids() /www.aslibra.com/v3/models/myuser.php:58
[0x00007fffae187580] get_users() /www.aslibra.com/v3/controllers/pic.php:134
[0x00007fffae187870] experience() /www.aslibra.com/v3/controllers/pic.php:349
[0x00007fffae187940] user() unknown:0
[0x00007fffae187cf0] call_user_func_array() /www.aslibra.com/system/core/CodeIgniter.php:297
[0x00007fffae187f40] +++ dump failed


日志里包含的信息:执行时间,访问入口,执行的函数的顺序和所有父级调用关系
比如这里可以获知是数据库查询时出现过慢,调用关系也一目了然,可以去排查跟踪了
Tags:
注:分析html的好东西

最近想用php写一个爬虫,就需要解析html,在sourceforge上找到一个项目叫做PHP Simple HTML DOM Parser,它可以以类似jQuery的方式通过css选择器来返回指定的DOM元素,功能十分强大。

首先要在程序的开始引入simple_html_dom.php这个文件

include_once('simple_html_dom.php');

PHP Simple HTML DOM Parser提供了3种方式来创建DOM对象
Tags: ,
分页: 5/20 第一页 上页 1 2 3 4 5 6 7 8 9 10 下页 最后页 [ 显示模式: 摘要 | 列表 ]

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐