
PHP
一名路过的小码农
夫苟其挫而不退矣,则小逆之后,必有小顺。大逆之后,必有大顺。
-
原创 关于页面显示乱码问题
当页面出现乱码。是不是很蛋疼。不用说新手们一看到乱码。疯狂的去审查自己的代码。是不是哪出问题了。特么的老子都特么看了一下午了。也没什么错了。为什么还是乱码的。你看明白这篇文章以后你的妈妈再也不担心出现乱码了。当页面出现乱码的原因主要的原因是(一般都是中文会出现乱码):1.程序文件的编码与当前页面的编码不一致。2.输出信息的编码与页面不一致。3.输出的2016-04-21 10:57:26620
0
-
原创 php namespace
大概的使用就是这个样子。首先创建data.php文件声明他的命名空间为 test\data 。使用main.php导入这个命名空间进行调用里面的var_dump function 。namespace" title="php namespace" style="margin:0px; padding:0px; border:0px; list-style:none">2016-04-21 11:24:14212
0
-
原创 php设计模式 抽象工厂模式
什么是抽象工厂模式?抽象工厂模式是对工厂模式的抽象,通俗来说,就是把工厂模式的结构分离出来成为能独立运行的个体。抽象工厂的分工是怎么样的呢?我这边把抽象工厂分为角色。每个类都各司其职。抽象工厂(Abstract Factory)角色:它声明一个创建抽象产品对象的接口。通常以接口或抽象类实现,所有的具体工厂类必须实现这个接口或继承这个类。2016-04-21 11:23:44338
0
-
原创 php设计模式 工厂模式
什么是工厂模式?工厂模式是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。比如说我现在有个例子:现在有一个汽车工厂,它生产小汽车和巴士车,小汽车和巴士车都是由引擎、车身和轮子组成的。在工厂模式中,我们把小汽车和巴士车作为汽车族群中的两个类别,生2016-04-21 11:23:05253
0
-
原创 php设计模式 单例模式
何为单例,它的作用?单例模式 从名字上来理解。单就是一次。 例 就是 实例化对象,也就是说我不管使用多少次自实例化一次对象。ok这个设计模式的作用是啥子呢? 通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。比如说我们这边要写一个操作mysql 的类。在 构造方法中 进行连接数据库操作。如果是通常的写法每new2016-04-21 11:22:32229
0
-
原创 php如何获取error log
比如说我们这边在上线的项目中。突然发现了一个500的 errors但是我们这边不清楚这是什么原因造成的。但是我们这边也不能看到错误信息。也不能进行错误显示操作。因为如果错误显示的话。用户这边会很疑惑。这段东西到底是什么意思。我只是想看一个网站怎么给我显示个这玩意。我们这边可以这样处理 使用php 内置 ini 中的log_errors 把错误写到一个文件中去。当然线上的服务2016-04-21 11:20:45298
0
-
原创 网站访问慢怎么办?
网站访问慢的主要原因。mysql负载较高,代码死循环,网络延时等。如果进行优化主要分析 PHP错误日志 mysql慢日志 mysql 错误日志 php慢日志 可以适当的加一些缓存等。当然也可以用xdebug 先定位到某个方法或者某一行然后 看代码 确定哪方面的问题xhprof 工具前端网站分析 : chrome YSlow 插件2016-04-21 13:43:31593
0
-
原创 php 异常获取
来先看看什么是异常: 异常通常指,你的代码可能在编译时没有错误,可是运行时会出现异常。异常在什么时候出现呢?比如说: $a=1; $b=0; echo $a-$b;这个时候系统会报出一个warning 说 除数不能为zero我们这边怎么去控制使程序不会出现这个异常呢?可以使用 try catch throw 这3个关键字进行异常处理 还有抛出操2016-04-21 11:19:39418
0
-
原创 检测域名是否存在
2016-04-21 11:12:25423
0
-
原创 php taint检测XSS/SQL/Shell注入漏洞
下载安装对应的扩展。安装完成后。使用很简单。在使用echo 之类的输出操作。或者 获取cookie session中的值、如果说你的代码存在注入的问题。系统会提示。2016-04-21 11:17:33471
0
-
原创 Swoole框架介绍
swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用框架的所有功能。swoo2016-04-21 10:51:261318
0
-
原创 php redis 排序集
1,zadd描述:增加一个或多个元素,如果该元素已经存在,更新它的socre值虽然有序集合有序,但它也是集合,不能重复元素,添加重复元素只会更新原有元素的score值参数:keyscore : doublevalue: string返回值:1 or 02,zrange描述:取得特定范围内的排序元素,0代表第一个元素,1代表第二个以此类推。-1代表最后一个2016-04-21 11:07:151112
0
-
原创 php trait特性
Trait 是 PHP5.4 中的新特性,是 PHP 多重继承的一种解决方案。例如,需要同时继承两个 Abstract Class, 这将会是件很麻烦的事情,Trait 就是为了解决这个问题而诞生的。如何使用首先,当然是声明个 Trait,PHP5.4 增加了 trait 关键字trait特性" title="php trait特性" style="margin:0px2016-04-21 11:16:38328
0
-
原创 yii ActiveRecord 输出运行sql语句
代码如下<?phpnamespace app\controllers;use Yii;use yii\web\Controller;use yii\models;use \app\models\Users;class UserController extends \yii\web\Controller{ public function actionIndex(){2016-08-19 15:15:134242
0
-
原创 php 读取xml
代码如下<?php$filename='test.xml';$data=simplexml_load_file($filename);if($data===false){ die("读取{$filename}文件失败");}$data=get_object_vars($data);foreach ($data as $key => $v) { if(is_object($v)){2016-08-19 15:54:37330
0
-
原创 yii 2.0 安装
点击访问首先访问上面的 yii install 页面 。通过 Composer 的方式进行 下载yii 项目Composer的安装我就不多说了。 windows 直接下载exe安装包进行安装就好了。composer global require "fxp/composer-asset-plugin:~1.1.1"composer create-project --prefer-d2016-08-11 10:05:26274
0
-
原创 yii ActiveForm 修改标签
比如说 我这边用 activeform 生成对应的标签field($searchModel,'username')->textInput()?>他的页面会出现这个玩意比如我这边要去删除 那个外面的div 找了半天资料 也没人写这玩意 没办法自己追代码去把他在调用 class里面的 fieldConfig 属性看样子应该是在这个类文件里面 tag2016-08-23 15:16:201114
0
-
原创 yii gii组件
我们的 yii 项目搭建完成了。然后进行gii 组件的使用首先需要进行 配置,默认他也是有配置的 只不过是 当前环境为 dev 情况下才可以去使用然后直接 ?r=gii从图中可以看出 gii 支持的 自动生成代码有很多。比如 模版,组件,控制器,表单 等。我这边 单单说一下 model crud 怎么去使用Table Name 要生成视频的表名Model2016-08-11 14:31:42521
0
-
原创 php如何进行两个单词的对比
我们就可以把单词字符串进行分割数组。然后循环进行对应这两个单词数组。但是这种方法明显有些太笨了。php是聪明的开发语言 。肯定不会让他的开发者犯这么二逼的事情。 它提供了内置函数levenshtein 详细用法 点击访问我这边就单单的举一个小例子就好了$str_1 = "createtime";$str_2 = "endtime";//基于第一个字符进行对比 返回两个字符串差异2016-09-18 10:47:28519
0
-
原创 php yii2 ar 方式确定 model 对应关系
yii2 ar 支持model的对应关系建立 支持 一对一。一对多方式的 数据查询首先确定两个model 的 在对应的model 类中 编写 一个叫 getmodel名称比如我这边写了两个表tbl_user,tbl_groupCREATE TABLE `tbl_group` ( `id` int(11) NOT NULL AUTO_INCREMENT, `group_2016-09-05 19:03:021141
0
-
原创 如何生成 composer.phar 文件
直接运行 php -r "readfile('https://getcomposer.org/installer');" | php 命令就可以在 当前dos目录下进行生成2016-09-06 14:41:363231
0
-
原创 无bug注释
/*// _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ =2016-09-24 11:30:10766
0
-
原创 php从文件中查找内容
不扯别的上代码。如图所示。主要思路采用递归遍历文件夹中文件。匹配数据。2016-04-21 10:44:141756
0
-
原创 thinkphp开发应该注意事项
使用thinkphp3.2开发项目在谷歌或火狐启动调试模式时X-Powered-By:THINKPHP可看到当前项目使用什么框架开发解决方案修改Thinkphp/ Library/ Think/ View.class.php文件删除此行或修改框架内容。以防止不良用户利用该框架的漏洞攻击网站。ps: 本文章只是2016-04-21 10:42:57373
0
-
原创 redis 主从 如何限制用户签到一次
最近有个每日签到的活动 用户每天只能签到一次。 一开始考虑用 get set 但是万一并发情况下刚刚set 为1 然后再去get 数据的时候 从库数据 延迟还没同步过来 还岂不是又可以签到一下get set 完全满足不了 这个需求的原子性要求后面找到 incrby 统一操作 主库redis incrby将key所储存的值加上增量increment。如果ke2017-05-31 11:14:021361
0
-
原创 php 文件读行赋值数组 效率对比 file feof
刚刚测试了一下 file 函数 与 fopen feof fgets 效率对比file写法echo '';print_r(file('./test.txt')); fopen feof fgets 写法/** * [readFileResult description] 读取文件 * @param string $file_path [description] 要读取的2017-06-06 11:03:13412
0
-
原创 php gzip json 串
<?php$echo_json = [ 'name' => 'xiaochuan', 'age' => '24', 'sex' => 'man',];header('Content-Type: application/json; charset=utf-8');ob_start('ob_gzhandler'); //这个是重点echo json_encode($echo_jso2017-07-05 11:34:23409
0
-
原创 PHP闭包 function() use()
php的闭包(Closure)也就是匿名函数。是PHP5.3引入的。闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。为什么要使用闭包:1.减少foreach的循环的代码2.减少函数的参数3.解除递归函数4.关于延迟绑定使用示例:<?php$name = 'xiaochuan';$test = function2017-06-26 15:24:351928
0
-
原创 php 检测远程文件大小
$header_info = get_headers('http://127.0.0.1/1.png', true);if($header_info['Content-Length'] > 51200) { die('图片超出 50k');}2017-07-14 18:49:52274
0
-
原创 php 检测远程图片格式 大小
<?php $img_info = getimagesize('http://127.0.0.1/1.png'); if(!empty($img_info)) { $reg = '/^image\/(png|jpg|gif|jpeg)$/'; if(!preg_match($reg, $img_info['mime'])) { die('文件格式不符合'); } if($2017-07-07 10:36:39753
0
-
原创 利用phpExcel进行数据导出
如何用使用phpExcel进行数据导出?我这边只是简单的说一下。如何进行生成。下载文件啥的。太简单了。如果要下载包可以看一下这篇文章 直通车 里面有文字解释。废话不多说。代码的存放位置跟 直通车对应的文章 放置地方一样 /** * 文件导出 * @param array $title 设置要导出的头 * @param arra2016-09-24 13:38:27444
0
-
原创 phpExcel 读取数据,大数据文件处理方案
/** * 读取 Excel 文件 * @param string $filePath 要读取的路径 * @param integer $sheet 要读取的工作列表 * @return array * @author lianggc 2016-09-06 */ public functi2016-09-24 13:27:5712002
0
-
原创 php cgi 模式下 获取不到 $argv 解决方案
可以拿一下$_SERVER 里面的 argv 具体代码很简单一行解决战斗$argv = $_SERVER['argv'];2017-09-19 17:13:391090
0
-
原创 php 反射学习
早知道php 有反射的概念一直没抽出空来。今天看书里面有个这玩意 弄个例子搞搞。不过似乎项目中用处不大。印象中似乎就 thinkphp 3.1 里面的 控制器调用使用了反射<?phpclass Person{ public $name; public $gender; public function say(){ echo $this->name,$this->g2017-03-14 18:12:44404
0
-
原创 php redis 并发控制
针对并发控制可以使用 memcacheq ,redis channle 等方式处理这里我单单的说一下redis 怎么去控制并发redis控制并发主要采用 redis list api 中的 lPush llen lPop 这三个函数 lLen - 获得列表的长度 lPop - 删除列表的第一个值并返回它 lPu2016-04-21 13:45:573135
0
-
原创 php如何执行操作系统命令
/** * [command_exec description] 命令执行 * @param string $command [description] 要执行的命令语句 * @return [type] [description] 返回对应执行结果,运行状态 * @author lianggc 2016-10-13 */function command_exec(2016-10-13 10:13:12359
0
-
原创 php 如何防止不同项目的 session key冲突
/** * [operationSession description] 操作session * @param string $key [description] 要设置的key * @param string $value [description] 要设置的值 * @param string $project_key [description] 项目k2016-10-13 10:30:36723
0
-
原创 php 第三方调用类。欢迎评论提意见
<?php /** * lianggc 2016-04-22 * 主要用于 第三方接口调用 */class Api { static private $obj=NULL; public $parameter; /** * [__construct description] 第一次声明对象 obj 进行初始化操作。 * @author lianggc 2016-042016-10-31 10:41:12322
0
-
原创 register_shutdown_function 函数详解
php开发测试及线上的时候可以根据不同情况设定错误和异常处理需要用到有设定错误和异常处理三函数函数详解" title="register_shutdown_function 函数详解" style="margin:0px; padding:0px; border:0px; list-style:none">下面讲一下register_shutdown_funct2016-04-21 11:06:05233
0
-
原创 golang 版empty方法
package mainimport ( "fmt" "reflect")func main() { var i int var s string = "xiaochuan" fmt.Println(empty(i)) fmt.Println(empty(s))}func empty(params interface{}) bool { //初始化变量 var (2016-11-25 13:50:011848
0