PHP
一名路过的小码农
夫苟其挫而不退矣,则小逆之后,必有小顺。大逆之后,必有大顺。
展开
-
PHP 扩展开发遇到的坑
Warning: PHP Startup: Invalid library (maybe not a PHP library) 'xiaochuan.so' 当提示这个的时候就说明对应模块找不到了需要 修改对应扩展c文件 添加//第一个* 替换为 大写的扩展名称 第二个为小写的扩展名称 #ifdef COMPILE_DL_*ZEND_GET_MODULE(*)#endif和#if原创 2017-07-18 16:15:39 · 1180 阅读 · 0 评论 -
PHP运行时全局构造体
struct _php_core_globals { zend_bool magic_quotes_gpc; // 是否对输入的GET/POST/Cookie数据使用自动字符串转义。 zend_bool magic_quotes_runtime; //是否对运行时从外部资源产生的数据使用自动字符串转义 zend_bool magic_quotes_原创 2017-10-09 16:05:02 · 478 阅读 · 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:13 · 4622 阅读 · 0 评论 -
php设计模式 抽象工厂模式
什么是抽象工厂模式?抽象工厂模式是对工厂模式的抽象,通俗来说,就是把工厂模式的结构分离出来成为能独立运行的个体。抽象工厂的分工是怎么样的呢?我这边把抽象工厂分为角色。每个类都各司其职。抽象工厂(Abstract Factory)角色:它声明一个创建抽象产品对象的接口。通常以接口或抽象类实现,所有的具体工厂类必须实现这个接口或继承这个类。原创 2016-04-21 11:23:44 · 428 阅读 · 0 评论 -
php设计模式 工厂模式
什么是工厂模式?工厂模式是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。比如说我现在有个例子:现在有一个汽车工厂,它生产小汽车和巴士车,小汽车和巴士车都是由引擎、车身和轮子组成的。在工厂模式中,我们把小汽车和巴士车作为汽车族群中的两个类别,生原创 2016-04-21 11:23:05 · 320 阅读 · 0 评论 -
php设计模式 单例模式
何为单例,它的作用?单例模式 从名字上来理解。单就是一次。 例 就是 实例化对象,也就是说我不管使用多少次自实例化一次对象。ok这个设计模式的作用是啥子呢? 通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。比如说我们这边要写一个操作mysql 的类。在 构造方法中 进行连接数据库操作。如果是通常的写法每new原创 2016-04-21 11:22:32 · 278 阅读 · 0 评论 -
php如何获取error log
比如说我们这边在上线的项目中。突然发现了一个500的 errors但是我们这边不清楚这是什么原因造成的。但是我们这边也不能看到错误信息。也不能进行错误显示操作。因为如果错误显示的话。用户这边会很疑惑。这段东西到底是什么意思。我只是想看一个网站怎么给我显示个这玩意。我们这边可以这样处理 使用php 内置 ini 中的log_errors 把错误写到一个文件中去。当然线上的服务原创 2016-04-21 11:20:45 · 429 阅读 · 0 评论 -
网站访问慢怎么办?
网站访问慢的主要原因。mysql负载较高,代码死循环,网络延时等。如果进行优化主要分析 PHP错误日志 mysql慢日志 mysql 错误日志 php慢日志 可以适当的加一些缓存等。当然也可以用xdebug 先定位到某个方法或者某一行然后 看代码 确定哪方面的问题xhprof 工具前端网站分析 : chrome YSlow 插件原创 2016-04-21 13:43:31 · 730 阅读 · 0 评论 -
php 异常获取
来先看看什么是异常: 异常通常指,你的代码可能在编译时没有错误,可是运行时会出现异常。异常在什么时候出现呢?比如说: $a=1; $b=0; echo $a-$b;这个时候系统会报出一个warning 说 除数不能为zero我们这边怎么去控制使程序不会出现这个异常呢?可以使用 try catch throw 这3个关键字进行异常处理 还有抛出操原创 2016-04-21 11:19:39 · 634 阅读 · 0 评论 -
检测域名是否存在
原创 2016-04-21 11:12:25 · 666 阅读 · 0 评论 -
php taint检测XSS/SQL/Shell注入漏洞
下载安装对应的扩展。安装完成后。使用很简单。在使用echo 之类的输出操作。或者 获取cookie session中的值、如果说你的代码存在注入的问题。系统会提示。原创 2016-04-21 11:17:33 · 635 阅读 · 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:14 · 277 阅读 · 0 评论 -
Swoole框架介绍
swoole是一套设计非常精巧,有效提高开发效率的PHP框架。Swoole有统一的唯一全局对象,类似于Java的注册树,挂载了常用的一些对象,如数据库、模板引擎、缓存系统、日志系统、事件处理系统等。可以很方便地调用功能,快速开发。使用swoole框架,仅需配置一个config.php文件,在其他PHP文件中只需要require config.php文件,即可调用框架的所有功能。swoo原创 2016-04-21 10:51:26 · 1807 阅读 · 0 评论 -
php redis 排序集
1,zadd描述:增加一个或多个元素,如果该元素已经存在,更新它的socre值虽然有序集合有序,但它也是集合,不能重复元素,添加重复元素只会更新原有元素的score值参数:keyscore : doublevalue: string返回值:1 or 02,zrange描述:取得特定范围内的排序元素,0代表第一个元素,1代表第二个以此类推。-1代表最后一个原创 2016-04-21 11:07:15 · 1456 阅读 · 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:37 · 432 阅读 · 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-d原创 2016-08-11 10:05:26 · 394 阅读 · 0 评论 -
yii ActiveForm 修改标签
比如说 我这边用 activeform 生成对应的标签field($searchModel,'username')->textInput()?>他的页面会出现这个玩意比如我这边要去删除 那个外面的div 找了半天资料 也没人写这玩意 没办法自己追代码去把他在调用 class里面的 fieldConfig 属性看样子应该是在这个类文件里面 tag原创 2016-08-23 15:16:20 · 1274 阅读 · 0 评论 -
yii gii组件
我们的 yii 项目搭建完成了。然后进行gii 组件的使用首先需要进行 配置,默认他也是有配置的 只不过是 当前环境为 dev 情况下才可以去使用然后直接 ?r=gii从图中可以看出 gii 支持的 自动生成代码有很多。比如 模版,组件,控制器,表单 等。我这边 单单说一下 model crud 怎么去使用Table Name 要生成视频的表名Model原创 2016-08-11 14:31:42 · 736 阅读 · 0 评论 -
php如何进行两个单词的对比
我们就可以把单词字符串进行分割数组。然后循环进行对应这两个单词数组。但是这种方法明显有些太笨了。php是聪明的开发语言 。肯定不会让他的开发者犯这么二逼的事情。 它提供了内置函数levenshtein 详细用法 点击访问我这边就单单的举一个小例子就好了$str_1 = "createtime";$str_2 = "endtime";//基于第一个字符进行对比 返回两个字符串差异原创 2016-09-18 10:47:28 · 661 阅读 · 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:02 · 1391 阅读 · 0 评论 -
如何生成 composer.phar 文件
直接运行 php -r "readfile('https://getcomposer.org/installer');" | php 命令就可以在 当前dos目录下进行生成原创 2016-09-06 14:41:36 · 3606 阅读 · 0 评论 -
无bug注释
/*// _ooOoo_ // o8888888o // 88" . "88 // (| -_- |) // O\ =原创 2016-09-24 11:30:10 · 1099 阅读 · 0 评论 -
php trait特性
Trait 是 PHP5.4 中的新特性,是 PHP 多重继承的一种解决方案。例如,需要同时继承两个 Abstract Class, 这将会是件很麻烦的事情,Trait 就是为了解决这个问题而诞生的。如何使用首先,当然是声明个 Trait,PHP5.4 增加了 trait 关键字trait特性" title="php trait特性" style="margin:0px原创 2016-04-21 11:16:38 · 392 阅读 · 0 评论 -
php从文件中查找内容
不扯别的上代码。如图所示。主要思路采用递归遍历文件夹中文件。匹配数据。原创 2016-04-21 10:44:14 · 2349 阅读 · 0 评论 -
thinkphp开发应该注意事项
使用thinkphp3.2开发项目在谷歌或火狐启动调试模式时X-Powered-By:THINKPHP可看到当前项目使用什么框架开发解决方案修改Thinkphp/ Library/ Think/ View.class.php文件删除此行或修改框架内容。以防止不良用户利用该框架的漏洞攻击网站。ps: 本文章只是原创 2016-04-21 10:42:57 · 550 阅读 · 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:12 · 580 阅读 · 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:13 · 551 阅读 · 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_jso原创 2017-07-05 11:34:23 · 494 阅读 · 0 评论 -
PHP闭包 function() use()
php的闭包(Closure)也就是匿名函数。是PHP5.3引入的。闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。为什么要使用闭包:1.减少foreach的循环的代码2.减少函数的参数3.解除递归函数4.关于延迟绑定使用示例:<?php$name = 'xiaochuan';$test = function原创 2017-06-26 15:24:35 · 2657 阅读 · 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:52 · 414 阅读 · 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:39 · 1003 阅读 · 0 评论 -
利用phpExcel进行数据导出
如何用使用phpExcel进行数据导出?我这边只是简单的说一下。如何进行生成。下载文件啥的。太简单了。如果要下载包可以看一下这篇文章 直通车 里面有文字解释。废话不多说。代码的存放位置跟 直通车对应的文章 放置地方一样 /** * 文件导出 * @param array $title 设置要导出的头 * @param arra原创 2016-09-24 13:38:27 · 609 阅读 · 0 评论 -
phpExcel 读取数据,大数据文件处理方案
/** * 读取 Excel 文件 * @param string $filePath 要读取的路径 * @param integer $sheet 要读取的工作列表 * @return array * @author lianggc 2016-09-06 */ public functi原创 2016-09-24 13:27:57 · 12835 阅读 · 0 评论 -
php cgi 模式下 获取不到 $argv 解决方案
可以拿一下$_SERVER 里面的 argv 具体代码很简单一行解决战斗$argv = $_SERVER['argv'];原创 2017-09-19 17:13:39 · 1428 阅读 · 0 评论 -
php fpm 启动 错误 Bad file descriptor
群里有个朋友 在启动 php-fpm的时候 报错unable to read what child say: Bad file descriptor找了一下对应的资料少的可怜。不过还是解决了 修改php-fpm.conf 中catch_workers_output = yes 将worker的标准输出和错误输出重定向到主要的错误日志记录中,如果没有设置,根据FastCGI的指定,将会原创 2017-09-20 17:37:50 · 6281 阅读 · 0 评论 -
redis 主从 如何限制用户签到一次
最近有个每日签到的活动 用户每天只能签到一次。 一开始考虑用 get set 但是万一并发情况下刚刚set 为1 然后再去get 数据的时候 从库数据 延迟还没同步过来 还岂不是又可以签到一下get set 完全满足不了 这个需求的原子性要求后面找到 incrby 统一操作 主库redis incrby将key所储存的值加上增量increment。如果ke原创 2017-05-31 11:14:02 · 1593 阅读 · 0 评论 -
php 反射学习
早知道php 有反射的概念一直没抽出空来。今天看书里面有个这玩意 弄个例子搞搞。不过似乎项目中用处不大。印象中似乎就 thinkphp 3.1 里面的 控制器调用使用了反射<?phpclass Person{ public $name; public $gender; public function say(){ echo $this->name,$this->g原创 2017-03-14 18:12:44 · 507 阅读 · 0 评论 -
php 第三方调用类。欢迎评论提意见
<?php /** * lianggc 2016-04-22 * 主要用于 第三方接口调用 */class Api { static private $obj=NULL; public $parameter; /** * [__construct description] 第一次声明对象 obj 进行初始化操作。 * @author lianggc 2016-04原创 2016-10-31 10:41:12 · 434 阅读 · 0 评论 -
register_shutdown_function 函数详解
php开发测试及线上的时候可以根据不同情况设定错误和异常处理需要用到有设定错误和异常处理三函数函数详解" title="register_shutdown_function 函数详解" style="margin:0px; padding:0px; border:0px; list-style:none">下面讲一下register_shutdown_funct原创 2016-04-21 11:06:05 · 355 阅读 · 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:01 · 3550 阅读 · 0 评论