- 浏览: 2542396 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
---------------------------------防止表单重复提交
/**
*
* 防止表单重复提交
* @param string $check_str
* @param int $grap_time_msec 毫秒
* @return bool false 没有重复 true 重复提交
*/
function duplicate_form_submit($check_str,$subtime_msec, $grap_time_msec = 5000){
$now = $subtime_msec;
$key = 'duplicate_form_submit';
$hash = md5($check_str);
if(isset($_SESSION[$key])) {
$data = $_SESSION[$key];
$time = $data['time'];
$last_from = $data['md5'];
if(abs($now - $time) < $grap_time_msec ) {
if( $last_from == $hash ) {
return true;
}
}
}
$_SESSION[$key] = array('time'=>$now, 'md5'=>$hash);
return false;
}
-------------------------------------Utf-8、gb2312都支持的汉字截取函数
/*
Utf-8、gb2312都支持的汉字截取函数
cut_str(字符串, 截取长度, 开始长度, 编码);
编码默认为 gb2312
开始长度默认为 0
$str = "abcd需要截取的字符串";
echo cut_str($str, 8, 0, 'gb2312');
*/
function cut_str($string, $sublen, $start = 0, $code = 'gb2312')
{
if($code == 'UTF-8')
{
$pa = "/[\x01-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xef][\x80-\xbf][\x80-\xbf]|\xf0[\x90-\xbf][\x80-\xbf][\x80-\xbf]|[\xf1-\xf7][\x80-\xbf][\x80-\xbf][\x80-\xbf]/";
preg_match_all($pa, $string, $t_string);
if(count($t_string[0]) - $start > $sublen) return join('', array_slice($t_string[0], $start, $sublen))."...";
return join('', array_slice($t_string[0], $start, $sublen));
}
else
{
$start = $start*2;
$sublen = $sublen*2;
$strlen = strlen($string);
$tmpstr = '';
for($i=0; $i< $strlen; $i++)
{
if($i>=$start && $i< ($start+$sublen))
{
if(ord(substr($string, $i, 1))>129)
{
$tmpstr.= substr($string, $i, 2);
}
else
{
$tmpstr.= substr($string, $i, 1);
}
}
if(ord(substr($string, $i, 1))>129) $i++;
}
if(strlen($tmpstr)< $strlen ) $tmpstr.= "...";
return $tmpstr;
}
}
------------------写一个函数,能够遍历一个文件夹下的所有文件和子文件夹
<?
function show_list($path){
if(is_dir($path)){
$dp=dir($path);
while($file=$dp->read())
if($file!='.'&&$file!='..')
show_list($path.'/'.$file);
$dp->close();
}
echo "$path<br>";
}
show_list('phpQuery');
?>
--------------------------------------------字符串翻转
function getStr($str){
$len=strlen($str);
for ($i=0;$i<$len/2;$i++){
$temp=$str[$i];
$str[$i]=$str[$len-$i-1];
$str[$len-$i-1]=$temp;
}
return $str;
}
-------------------------------------------截取中文字符
/*
* 截取中文字符
*
*
* */
function cutStr($sourcestr,$cutlength)
{
$returnstr='';
$i=0;
$n=0;
$str_length=strlen($sourcestr);//字符串的字节数
while (($n<$cutlength) and ($i<=$str_length))
{
$temp_str=substr($sourcestr,$i,1);
$ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码
if ($ascnum>=224) //如果ASCII位高与224,
{
$returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符
$i=$i+3; //实际Byte计为3
$n++; //字串长度计1
}
elseif ($ascnum>=192) //如果ASCII位高与192,
{
$returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符
$i=$i+2; //实际Byte计为2
$n++; //字串长度计1
}
elseif ($ascnum>=65 && $ascnum<=90) //如果是大写字母,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数仍计1个
$n++; //但考虑整体美观,大写字母计成一个高位字符
}
else //其他情况下,包括小写字母和半角标点符号,
{
$returnstr=$returnstr.substr($sourcestr,$i,1);
$i=$i+1; //实际的Byte数计1个
$n=$n+0.5; //小写字母和半角标点等与半个高位字符宽...
}
}
if ($str_length>$cutlength){
$returnstr = $returnstr . "...";//超过长度时在尾处加上省略号
}
return $returnstr;
}
/*
* 判断远程文件是否存在
*
*
* */
function remote_file_exists($url_file){
//检测输入
$url_file = trim($url_file);
if (empty($url_file)) { return false; }
$url_arr = parse_url($url_file);
if (!is_array($url_arr) || empty($url_arr)){ return false; }
//获取请求数据
$host = $url_arr['host'];
$path = $url_arr['path'] ."?". $url_arr['query'];
$port = isset($url_arr['port']) ? $url_arr['port'] : "80";
//连接服务器
$fp = fsockopen($host, $port, $err_no, $err_str, 30);
if (!$fp){ return false; }
//构造请求协议
$request_str = "GET ".$path." HTTP/1.1\r\n";
$request_str .= "Host: ".$host."\r\n";
$request_str .= "Connection: Close\r\n\r\n";
//发送请求
fwrite($fp, $request_str);
$first_header = fgets($fp, 1024);
fclose($fp);
//判断文件是否存在
if (trim($first_header) == ""){ return false; }
if (!preg_match("/200/", $first_header)){
return false;
}
return true;
}
//SQL ADDSLASHES
function saddslashes($string) {
if(is_array($string)) {
foreach($string as $key => $val) {
$string[$key] = saddslashes($val);
}
} else {
$string = addslashes($string);
}
return $string;
}
/*
* 20M转换成20*1024*1024B
*/
function transSpaceSize($size){
$size=strtoupper($size);
$num=(int)preg_replace("/[A-Z]/","", $size);
if(strpos($size,"T")!==false)
return $num*1024*1024*1024*1024;
elseif(strpos($size,"G")!==false)
return $num*1024*1024*1024;
elseif(strpos($size,"M")!==false)
return $num*1024*1024;
elseif(strpos($size,"K")!==false)
return $num*1024;
else
return $num;
}
/*
* 把byte转换成KB,MB,GB
*/
function getUnit($size){
$array_unit=array(array(1,"Byte"),
array(1024,"KB"),
array(1024*1024,"MB"),
array(1024*1024*1024,"GB"),
array(1024*1024*1024*1024,"TB")
);
foreach($array_unit as $u){
$tmp=round($size/$u[0],2);
if($tmp<1024){
return $tmp.$u[1];
break;
}
}
}
function file_ext($filename)
{
return trim(substr(strrchr($filename, '.'), 1, 10));
}
/**
* 逐一检测并创建每一级目录
* @param string $dir_path 目录路径
*$cur_dir 绝对路径
* @return int $mod 目录权限
*/
function ios_mkdir($cur_dir,$dir_path, $mod=0777){
$cur_dir=$cur_dir."/";
if (is_dir($cur_dir . $dir_path)){
return true;
}
$arr_path = explode('/', $dir_path);
foreach ($arr_path as $val){
if (!empty($val)){
$cur_dir .= $val;
if (is_dir($cur_dir)){
$cur_dir .= '/';
continue;
}
if (mkdir($cur_dir,$mod)){
$cur_dir .= '/';
fclose(fopen($cur_dir.'index.htm', 'w'));
}else{
return false;
}
}
}
return true;
}
/**
* 删除目录及目录下的所有文件
*
* @param string $dir
*
* @return boolen
*/
function ios_rmdir($dir)
{
$dir = str_replace(array('..', "\n", "\r"), array('', '', ''), $dir);
$ret_val = false;
if (is_dir($dir))
{
$d = @dir($dir);
if($d)
{
while (false !== ($entry = $d->read()))
{
if($entry!='.' && $entry!='..')
{
$entry = $dir.'/'.$entry;
if(is_dir($entry)){
ios_rmdir($entry);
}
else{
@unlink($entry);
}
}
}
$d->close();
$ret_val = rmdir($dir);
}
}
else{
$ret_val = unlink($dir);
}
return $ret_val;
}
发表评论
-
wamp 升级php apache mysql
2014-02-18 14:30 1192wamp对于日常开发来说会增添非常大的方便 但是对于集成 ... -
[被震撼到了]我的2009年自我反省【也名10问PHP程序员】php程序员进阶篇
2012-10-29 11:22 10101.首先看了PHP的源码API函数 ,对于许多口水仗的争论一 ... -
五种常见的PHP设计模式
2012-08-15 13:37 1100原文地址:http://www.ibm.com/develop ... -
PHP的Realpath Cache
2012-07-03 09:53 3760PHP的缓存有很多种,包括输出缓冲(ob系列函数),opcod ... -
nginx+php-fmp 内存不释放
2012-06-20 11:01 5237由于服务器只有600M的内 ... -
[转]探究php底层运行机制
2012-04-17 14:36 2098http://www.myext.cn/Article/921 ... -
APC 缓存
2012-04-16 16:22 6118APC主要有两个作用,一是将php的编译缓存保存在共享内存中, ... -
【汇总】PHP-FPM 配置优化
2012-02-25 11:41 17350http://www.linuxidc.com/Linux/2 ... -
【推荐转载】谁贪占了我的系统资源 php-fpm
2012-02-16 14:12 1371测试人员向我们反映:在Facebook平台的游戏比其它平台 ... -
php代码性能分析工具:XHProf
2012-01-30 15:11 4893http://www.ooso.net/archives/52 ... -
神奇的Fastcgi_Finish_Request
2012-01-17 10:52 1257当PHP运行在FastCGI模式时,PHP FPM提供了一个名 ... -
PHP Warning: Xdebug MUST be loaded as a Zend extension in Unknown on line 0 解决办法
2011-11-07 17:18 3395;extension=php_xdebug.dll z ... -
【转】php 程序员
2011-11-05 12:01 951http://www.blags.org/php-pro ... -
cookies之PHPSESSID
2011-10-24 21:52 2952// 设置str function get_cooki ... -
并发同步
2011-10-11 14:26 1453============================= ... -
PHP核心编译配置选项列表
2011-09-15 11:21 1233PHP 的编译配置详细选项 ... -
Hudson_CI:PHP持续集成
2011-09-09 16:29 3099一、持续集成的概念 概念网上很多了,这里就不再详细说了。 ... -
try{}catch{}
2011-07-22 15:13 1219<?php /* 检测(try)、抛出(th ... -
PHP内存溢出Allowed memory size of 解决办法
2011-07-01 12:57 20603============================All ... -
?php消息队列
2011-06-22 09:45 2439php-通过共享内存实现消息队列和进程通信的两个类 h ...
相关推荐
【PHP常用技巧汇总】 在PHP编程中,掌握一些实用的技巧可以提高开发效率,优化代码质量。以下是一些常见的PHP技巧: 1. **文件读取函数**:`PHP_Read()` 函数通过 `fopen()` 打开文件,使用 `fgets()` 逐行读取...
### PHP面试宝典100题汇总知识点解析 #### 1. Http与Https的区别 - **安全性**: HTTP采用明文传输,数据容易被截获;HTTPS则是基于SSL/TLS的安全协议,提供加密传输,保障了数据的安全性。 - **连接方式与端口**: ...
做过PHP开发的程序员应该清楚,PHP中有很多内置的功能,掌握了它们,可以帮助你在做PHP开发时更加得心应手,本文将分享8个开发必备的PHP功能,个个都非常实用,希望各位PHP开发者能够掌握。 1、传递任意数量的函数...
在本节中,我们将对PHP实现遍历文件夹的方法进行汇总,这不仅对于理解PHP文件处理API非常重要,而且对于掌握服务器端的文件管理操作也至关重要。 首先,我们来看一个基本的PHP函数,它可以帮助我们遍历指定路径下的...
每个实例都经作者精心筛选,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。 本书适合PHP的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合PHP程序员参考、查阅。 目 录 目录:...
每个实例都经作者精心筛选,具有很强的实用性,其中一些实例是开发人员难于寻觅的解决方案。 本书适合PHP的初学者,如高校学生、求职人员作为练习、速查、学习使用,也适合PHP程序员参考、查阅。 目 录 目录:...
- 《PHP+MongoDB数据库操作技巧大全》:提供MongoDB与PHP结合的各种实用操作技巧。 - 《PHP基于pdo操作数据库技巧总结》:虽然不是关于MongoDB,但可以学习如何使用PDO进行SQL数据库操作。 - 《php面向对象程序设计...
如果将PHP多线程技术与NoSQL数据库结合起来,就能够实现通过多个线程同时对NoSQL数据库发起查询,然后将结果汇总,这样不仅可以充分利用多核处理器,还能通过并行处理大幅度提升整体处理速度。 在实际应用中,比如...
在PHP编程中,有时我们需要将数据结构转换成XML格式,以便于数据...- 《php常见数据库操作技巧汇总》:提供有关PHP数据库操作的实用技巧。 这些资源将帮助你进一步提升PHP编程技能,特别是涉及到数组和XML转换的部分。
在PHP编程语言中,str_pad()函数是一个非常实用的字符串处理函数,它用于将一个原始字符串填充至指定长度。该函数非常适合于需要标准化字符串长度的场景,比如在制作表格或者控制台输出格式化数据时。接下来,我们将...
总的来说,jQuery股票数据表格插件mmGrid是一款实用的工具,它为开发者提供了一种高效展示和管理股票数据的方法。通过灵活的配置和丰富的功能,mmGrid能够适应各种复杂的Web应用需求,提高用户体验。在实际项目中,...
本文汇总了9个在日常开发中可能不那么显而易见,但非常实用的小技巧,通过这些技巧可以进一步提升开发效率和代码质量。 1. 更新父表的timestamps:在Laravel中,当更新关联表数据时,有时需要同时更新父表的最后...
Laravel是当前流行的PHP开发框架,而Laravel 5.1作为该框架的一个重要版本,在模型测试和数据填充方面引入了模型工厂(Model Factory)这一实用特性。模型工厂可以与种子数据填充(Seeder)结合使用,用于创建测试...
上传图片到服务器是网站开发中一个常见而重要的功能,尤其在涉及用户...对于深入学习和研究,可以参考更多关于jQuery上传操作的详细资料,例如《jQuery上传操作汇总》,这将有助于我们提升相关知识并完善我们的技术栈。
尽管具体内容未给出,但我们可以根据常见的实用技巧来推测并详细阐述这些技巧。 ### 第40条:利用箭头函数简化回调 **技巧概述:** 在JavaScript中,箭头函数提供了一种更简洁的方式来定义函数,而且它们不会创建...