开发总结

来源:互联网 发布:网络传销被骗能退钱吗 编辑:程序博客网 时间:2024/05/16 07:16

1、

简单、直接

2、

php 流,java 流的好处

3、

php序列化和json的区别

 http://www.cnblogs.com/gnielee/archive/2009/08/02/1536906.html

4、

php合并两个数组注意点

     如果两个数组的key值唯一,不一样,并且有特殊含义,合并数组的时候,不能用array_merge(),否则会把key值重新按0开始计算,要用+号,会保留之前的key值。

     如果两个数组的key值有重复,并且没有特殊含义,合并数组的时候,不能用+号,否则可能不会合并成功。要用array_merge(),这样只是key值重新从0开始排序。

5、

获取数组的一部分如何保留之前的键值

     $temp_array = array_slice($temp_array, $start,intval($end-$start),true);加上这个true,就会保留之前数组的key值。如果不加,如果之前数组的键值是数字,就会丢失,按照0重新排序。

6、

理解preg_match_all,preg_split的用法

7、

画流程图很重要,便于理解

8、

mysql的where子句也有正则表达式查询。php,java也有正则匹配,估计其他语言也有。

select * from * where test REGEXP '"baidu_info":"[^"]' order by id desc limit 2\G;

9、

使用fsockopen异步调用脚本,适用于高并发调用脚本。为了测试被调用脚本是否被调用,可以用file_put_contents()把记录写到文件中,可以记录代码执行到哪一行。有时候跟踪到数据,有时候不行,不行的原因是被调用脚本出现错误(有时候是可以忽略的错误,但是用ini_set('display_errors', true);error_reporting(E_ALL);打开错误之后,也会导致被调用脚本执行错误,这是可以将错误显示关闭)。本地调试的时候,域名要配成本地的ip地址,不能配成127.0.0.1 域名。正式环境调用域名访问脚本的时候,确保发布的脚本同步到各个服务器(找运维),否则通过域名调用脚本的时候,可能调不通。本地测试的时候,更改被调用脚本的域名时,需要重启apache服务器才能生效。order by id 很影响性能
php的错误日志要谨慎使用

10、

记录日志的两种方式,可以记录在数据库表中,也可以记录在服务器的文件中。

建议记录到服务器的文件中,因为如果数据量很大,无法保存在数据库的表中。也不会影响数据库表的性能。

@file_put_contents('each_send.log',print_r( json_encode($temp_array),true),FILE_APPEND);

11、

记录日志的方式

可以接收参数,将最终的数据打印出来,这是一个很好的方法,要么记录到文件里面,要么记录到数据库表里面,要么打印出来,灵活处理。

http://hi.baidu.com/hdjdcyl/item/285d2b93f8293cf1291647cd

12、

json_decode($str,true);得到是数组

json_decode($str);得到的是对象

13、

数据库超时;接口超时。

http://dev.mysql.com/doc/refman/5.0/en/error-handling.html

mysql_errorno()

14、

php超时处理全面总结 

http://wenku.baidu.com/view/de459c42e45c3b3567ec8b37.html

15、

缓存的威力很巨大。

if (class_exists('Memcache')){
 $memcache = new Memcache;
 $memAvailable = $memcache->connect(MEMCACHED_HOST, MEMCACHED_PORT);
}

if ($memAvailable) {
    $memKey = 'project_'.md5(json_encode($temp_array));
    $res_temp = $memcache->get($memKey);
   }
   if (!$res_temp) {
    try {
     $res_temp = $client->request(RESTFUL_GET, $url, $temp_array,60);     
    } catch (Exception $e) {

    }
    if ($res_temp) {
     $memcache->set($memKey,$res_temp,0,43200);//12个小时
    }  
   }

 http://wenku.baidu.com/view/d528c6340b4c2e3f5727633c.html

 http://wenku.baidu.com/view/bbb7a14d767f5acfa1c7cda0.html

 

16、

进程锁

$command = "ps aux | grep  'order/*.php' | grep -v 'grep' |  grep -v '/bin/sh'   | wc -l";

需要注意的地方是

在服务器的crontab配置必须是

 * * * * * (cd /opt/tuniu/www/crm/scripts/order/; /opt/tuniu/php/bin/php /opt/tuniu/www/crm/scripts/order/*.php)

红色字体部分,进程锁命令中文件及其路径必须是crontab配置文件及其路径中的一部分。

否则进程锁无法正确获取到当前进程的数量

17、

看书,可以这样,为了扩展知识,知道能作什么就可以。想想什么场景会用到。

18、

http://www.cnblogs.com/umlonline/p/3531288.html

19、

对应restful接口,为了必须不知道哪个地方输出echo,导致最终调用方base64解密失败,json节目失败。

采用

ob_start();

ob_get_clean();

将额外的输出echo放在缓冲区里面并删除掉。

20、

将日志记录在数据库中,如果超过mysql的最大连接数,就会插入失败,以后还是把日志记录在服务器的文件上面。

21、

ps aux|grep '*'

在linux服务器上面使用上面的命令即可显示当前用户的连接数。如果sql语句写的不好,导致查询很慢,需要终止数据库查询连接,就可以使用上面的命令显示当前的连接,然后kill -9 进程号即可。

0 0
原创粉丝点击