开发总结
来源:互联网 发布:网络传销被骗能退钱吗 编辑:程序博客网 时间: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 进程号即可。
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- 开发总结!
- 开发总结
- 开发总结
- 开发总结
- 开发总结
- Hi3518开发板开发总结
- 10071 - Back to High School Physics
- Ubuntu 12.10 Server VNC文件配置
- HDU 1856 More is better (数据结构,并查集)
- Android USB Host(Android USB 主机通讯)
- Oracle Database Server Messages(一)
- 开发总结
- STM8S103F的TIM2无法进入中断
- history
- 因为他的自信
- window7防火墙无法进行设置
- 内存详解(vmmap)
- 互联网人士每天该看的网站
- Android开发之异常处理篇(一):SDK Manager闪退的解决方法
- 10300 - Ecological Premium