php
文章平均质量分 75
码农Robin
不会讲段子的厨子不是一个好的码农
展开
-
通过shell脚本监测php运行状态,重启php
#! /bin/shwhile [ true ];do #!监听指定url状态码 if [ `curl -I -m 10 -o /dev/null -s -w %{http_code} http://www.test.com/index.php` -eq 502 ]; then #!重启php /etc/init.d/php-fpm-52 restart else ech原创 2020-07-25 12:19:32 · 608 阅读 · 0 评论 -
如何解决"Cannot send session cache limiter – headers already sent "错误
session_start();今天接手了一个非常老的项目,只能采用php5.2及以下版本才行。然而在运行之初就碰到一个问题:在网上找了下,介绍很详细(以下转载自博客园赢风):如果使用基于cookie的session(cookie-based sessions),那么在使用Session_start()之前浏览器不能有任何输出,否则会出现"Cannot send session cac...转载 2020-04-29 23:09:13 · 942 阅读 · 0 评论 -
安装PHP Xdebug并配置到phpstorm
为了在php开发中能够进行断点调试,可以通过Xdebug实现。1、Xdebug调试原理右边机器(IP=10.0.1.2)是布署了Nginx/php的服务端(下文简称php服务端),左侧机器(IP=10.0.1.42)是布署了IDE(比如Phpstorm)的IDE端(下文简称IDE端)。调试中基本通信过程说明:打开浏览器,访问web页面,nginx通过fastcgi网关接口加载PHP脚本...原创 2020-04-04 15:59:09 · 283 阅读 · 0 评论 -
TP5学习(八):视图
一、视图实例化视图功能由\think\View类配合视图驱动(模板引擎)类一起完成,目前的内置模板引擎包含PHP原生模板和Think模板引擎。因为新版的控制器可以无需继承任何的基础类,因此在控制器中如何使用视图取决于你怎么定义控制器。继承\think\Controller类如果你的控制器继承了\think\Controller类的话,则无需自己实例化视图类,可以直接调用控制器基础类封装的...原创 2019-05-03 20:52:18 · 875 阅读 · 0 评论 -
TP5学习(七):模型
一、定义定义一个User模型类:namespace app\index\model;use think\Model;class User extends Model{}默认主键为自动识别,如果需要指定,可以设置属性:namespace app\index\model;use think\Model;class User extends Model{ prot...原创 2019-05-03 20:38:22 · 3130 阅读 · 0 评论 -
TP5学习:数据库(续)
一、查询事件从5.0.4+版本开始,增加了数据库的CURD操作事件支持,包括:查询事件仅支持find、select、insert、update和delete方法。注册事件使用下面的方法注册数据库查询事件Query::event('after_insert','callback');Query::event('before_select',function($options,$quer...原创 2019-05-03 19:31:54 · 426 阅读 · 0 评论 -
TP5学习(六):数据库
TP内置了抽象数据库访问层,把不同的数据库操作封装起来,只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。采用PDO方式,目前包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。一、连接数据库**配置文件定义 **常用的配置方式是在应用目录或者模块目录下面的database.php中添加下面的...原创 2019-05-03 15:13:43 · 1412 阅读 · 0 评论 -
TP5学习(五):请求
一、请求信息如果要获取当前的请求信息,可以使用\think\Request类,除了$request = Request::instance();也可以使用助手函数$request = request();当然,最方便的还是使用注入请求对象的方式来获取变量。获取URL信息$request = Request::instance();// 获取当前域名echo 'domai...原创 2019-05-03 13:14:52 · 1399 阅读 · 0 评论 -
微信支付
微信支付官方文档微信支付中我们平时用得比较多的有:JSAPI支付:基于微信内部生态,如公众号等建立的支付系统Native支付:基于商品本身,完成交易的支付APP支付:基于手机APP,调起微信支付H5支付:从手机浏览器,调起微信支付小程序支付:从小程序调起微信支付,与JSAPI、JSSDK类似一定要区分不同应用场景,采用对应的接入方式,否则会有很多错误产生。...原创 2019-04-28 14:17:44 · 429 阅读 · 1 评论 -
TP5学习(四):控制器
TP5的控制器定义比较灵活,可以无需继承任何的基础类,也可以继承官方封装的\think\Controller类或其他的控制器类。1、控制器定义一个典型的控制器类定义如下:namespace app\index\controller;class Index { public function index() { return 'index'; }...原创 2019-05-03 09:34:09 · 1018 阅读 · 0 评论 -
php常见四种排序算法
<?php/** * @Function bubbleSort 冒泡排序 * @param $arr * @return mixed * @Author: Robin * @Date: 19-4-8 * @Time: 下午5:32 * @Return: mixed */function bubbleSort ($arr){ $len = count($arr);...原创 2019-04-08 17:36:37 · 259 阅读 · 0 评论 -
PHP统计目录下的文件总数及代码行数(去除注释及空行)
<?php/** * @author xiaoxiao <x_824@sina.com> 2011-1-12 * @link http://xiaoyaoxia.cnblogs.com/ * @license * 统计目录下的文件行数及总文件数··去除注释 */set_time_limit(0);$obj = new CaculateFiles();//如果设置...转载 2019-03-21 18:29:24 · 284 阅读 · 0 评论 -
PHP队列的实现,看完秒懂
队列是一种特殊的线性表,它只允许在表的前端,可以称之为front,进行删除操作;而在表的后端,可以称之为rear进行插入操作。队列和堆栈一样,是一种操作受限制的线性表,和堆栈不同之处在于:队列是遵循“先进先出”原则,而堆栈遵循的是“先进后出”原则。队列进行插入操作的端称为队尾,进行删除操作的称为队头,只允许在队尾进行插入操作,在队头进行删除操作。队列的数据元素又称为队列元素,在队尾中插入一个元素...转载 2019-03-21 10:10:16 · 2619 阅读 · 2 评论 -
php json_encode乱码及url传参中的一些小坑
在编码过程中、经常会用到json_encode来处理中文、但是、出现一个问题、中文都会被转码、变为” \u**** ”的格式、如何避免被转码、1、PHP的版本为5.4以上;echo json_encode( '中文' ); // "\u4e2d\u6587"echo json_encode( '中文', JSON_UNESCAPED_UNICODE ); // "中文"2、先把汉字url...原创 2019-03-11 15:23:19 · 1404 阅读 · 0 评论 -
实用】PHP实现下载与压缩文件的一些方法的封装与整理
一、PHP实现打包zip并下载功能$file_template = FCPATH.'canddata/cand_picture.zip';//在此之前你的项目目录中必须新建一个空的zip包(必须存在)$downname = $card.'.zip';//你即将打包的zip文件名称$file_name = FCPATH.'canddata/'.$card.'.zip';//把你打包后zip所存...转载 2019-03-11 09:08:21 · 336 阅读 · 0 评论 -
PHP程序员路径发展规划
阶段1:基础阶段(基础PHP程序员)重点:把LNMP搞熟练(核心是安装配置基本操作)目标:能够完成基本的LNMP系统安装,简单的配置维护;能够做基本的简单系统的PHP开发能够在PHP中型系统中支持某个功能模块的开发知识点掌握:Linux:基本命令、操作、启动、基本服务配置(包括rpm安装文件,各种服务配置等);会写简单的shell脚本和awk/sed 脚本命令等。Nginx...转载 2019-03-01 15:16:14 · 142 阅读 · 0 评论 -
TP5学习(九):模板
一、模板定位模板文件定义每个模块的模板文件是独立的,为了对模板文件更加有效的管理,ThinkPHP对模板文件进行目录划分,默认的模板文件定义规则是:视图目录/控制器名(小写)/操作名(小写)+模板后缀默认的视图目录是模块的view目录,框架的默认视图文件后缀是.html。模板渲染规则模板渲染使用\think\View类的fetch方法,渲染规则为:模块@控制器/操作模板文...原创 2019-05-03 21:39:03 · 1542 阅读 · 0 评论 -
TP5学习(十):日志
一、介绍日志记录由\think\Log类完成,主要完成日志记录和跟踪调试。由于日志记录了所有的运行错误,因此养成经常查看日志文件的习惯,可以避免和及早发现很多的错误隐患。日志初始化在使用日志记录之前,首先需要初始化日志类,指定当前使用的日志记录方式。Log::init([ 'type' => 'File', 'path' => APP_PATH.'lo...原创 2019-05-03 21:53:26 · 1934 阅读 · 0 评论 -
TP5学习(十一):验证
一、验证器概述TP5验证使用独立的\think\Validate类或者验证器进行验证。独立验证任何时候,都可以使用Validate类进行独立的验证操作,例如:$validate = new Validate([ 'name' => 'require|max:25', 'email' => 'email']);$data = [ 'name' ...原创 2019-05-03 22:20:43 · 643 阅读 · 0 评论 -
验证身份证号
class IdcardValidatorHelper{ /** * 验证身份证号 * @param [type] $idcard [身份证号码] */ public function checkIdCard($idcard){ if(empty($idcard)){ return false; ...原创 2019-08-20 15:49:53 · 552 阅读 · 0 评论 -
MySQL关于用户关注粉丝表设计方案
一、数据结构分析用户关注粉丝是一个多对多的数据模型,分析对象的数据特征,我们给每个用户设计一个关注者属性和粉丝属性,用于存储用户的关注者id和粉丝id,如用户1:$arr1 = [ 'follow' => '[2,3,4], 'fans' => [4,5,6],]二、用户逻辑关系梳理在用户关注粉丝模型中,有两种常见场景:查看自己的粉丝或者关注列表:这种情况下最多...原创 2019-07-26 12:09:51 · 3332 阅读 · 0 评论 -
PHP 数组排序函数sort,rsort,ksort,krsort,asort,arsort区别
一、概念:1、自然排序法:即按自然数的大小排序,例如“10>2”;2、计算机标准排序法:是以逐个字符比较,排序,例如“2>10”(因为第一位2>1);3、数值数组:带有数字 ID 键的数组;4、关联数组:带有指定的键的数组,每个键关联一个值。5、默认的排序为按键值升序排序,排序方式为自然排序。二、帮助理解1、a(association)前缀表示以键值关联排序;2、...原创 2019-05-28 15:25:39 · 692 阅读 · 0 评论 -
php抽象类、interface、trait、final
一、抽象类抽象类的定义任何一个类,如果它里面至少有一个方法被声明为抽象方法,那么这个类就必须被声明为抽象的,被定义为抽象的方法只是声明了其调用方式(参数),不能定义其具体的功能实现,即抽象方法没有方法体。抽象类不能被实例化abstract class AbstractClass{ // 强制要求子类定义这些方法 abstract protected function get...原创 2019-05-12 15:35:08 · 357 阅读 · 0 评论 -
PHP八大设计模式
一、预热命名空间Test1.php<?phpnamespace Test1;//命名空间Test1function test(){ echo __FILE__;}Test2.php<?phpnamespace Test2; //命名空间Test2function test(){ echo __FILE__;//打印当前文件所在的绝对路径。}Tes...转载 2019-05-09 15:33:46 · 207 阅读 · 0 评论 -
总结几种常见web攻击手段及其防御方式
XSS(跨站脚本攻击)CSRF(跨站请求伪造)SQL注入DDOS转载 2019-05-06 14:48:27 · 553 阅读 · 0 评论 -
TP5学习(三):路由
2、URL访问与路由3、TP5中的MVC4、请求5、数据库6、模型7、视图8、模板9、日志10、错误和调试原创 2019-04-29 23:44:09 · 2109 阅读 · 0 评论 -
TP5学习(二):配置
TP5中的配置相关知识点原创 2019-04-29 00:08:09 · 414 阅读 · 0 评论 -
TP5学习(一)
1、目录结构project 应用部署目录├─application 应用目录(可设置)│ ├─common 公共模块目录(可更改)│ ├─index 模块目录(可更改)│ │ ├─config.php 模块配置文件│ │ ├─common.php 模块函数文件│ │ ├─con...原创 2019-04-28 23:37:41 · 2684 阅读 · 0 评论 -
模板引擎原理
我们在php开发中,视图层view是不允许有php代码来操作数据库之类的来获取数据的,我们一般都会在控制器层controller,就已经把视图层要展示的数据准备好,方便视图层直接用来展示。smarty模板技术,可以让数据和视图进行分离,让视图中不能直接出现php代码。这样的话,让前段页面的开发和后台数据的开发,可以双管齐下,同时进行了。smarty模板的使用比较简单,主要有两个非常核心的函数。...转载 2019-04-28 22:39:38 · 486 阅读 · 0 评论 -
TP5学习(十三):其他
一、缓存二、Session三、Cookie四、多语言五、分页六、上传七、验证码八、图像处理九、文件处理十、单元测试原创 2019-05-04 17:51:01 · 862 阅读 · 0 评论 -
TP5学习(十二):安全
一、输入安全设置public目录为唯一对外访问目录,不要把资源文件放入应用目录;开启表单令牌验证避免数据的重复提交,能起到CSRF防御作用;使用框架提供的请求变量获取方法(Request类param方法及input助手函数)而不是原生系统变量获取用户输入数据;对不同的应用需求设置default_filter过滤规则(默认没有任何过滤规则),常见的安全过滤函数包括stripslashes、...原创 2019-05-03 22:26:15 · 2828 阅读 · 2 评论 -
PHP-线程安全与非线程安全版本的区别
Windows版的PHP从版本5.2.1开始有Thread Safe(线程安全)和None Thread Safe(NTS,非线程安全)之分,这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍。从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采用多进程 的工作方式不同的是Windows系统是采用多线程的工...转载 2019-02-19 15:30:32 · 424 阅读 · 0 评论 -
php时间日期
时间戳:time();//当前时间戳strtotime('2019-01-01');//指定日期的时间戳strtotime("-1 day"); //昨天的时间戳strtotime(date('Y-m-d', strtotime("this week Monday")));//本周一的时间戳strtotime(date('Y-m-01'));//本月月初的时间戳strtotime(da...原创 2019-02-13 10:40:09 · 218 阅读 · 0 评论 -
AES加密解密
class AES{ private $screct_key = 'screct_key'; /** * 加密方法 * @param string $str * @return string $this->config->item('img_url') */ function enjiami($str){ ...原创 2019-02-15 10:11:46 · 548 阅读 · 0 评论 -
分布式事务
文章纲要:此次分享的缘由目前分布式事务问题是怎么解决的行业中有什么解决方案这些解决方案分别有什么优缺点别人是怎么做的我们可以怎么来做此次分享的缘由支付重构考虑支付重构的时候,自然想到原本属于一个本地事务中的处理,现在要跨应用了要怎么处理。拿充值订单举个栗子吧,假设:原本订单模块和账户模块是放在一起的,现在需要做服务拆分,拆分成订单服务,账户服务。原本收到充值回调后,可以将修改...转载 2018-12-07 12:11:43 · 275 阅读 · 0 评论 -
PHP消息队列的实现方式
队列的概念:1、是队列结构的中间件2、消息放入后不需要立即处理3、由订阅者/消费者按顺序处理队列原理:也是解耦的原理:业务系统和队列处理系统没有关系一个写(业务系统),一个读(队列管理系统)。写的只管往队列里写,别的不用操心,读的能不能读完和写的也没有关系同样,读的只管从队列里往外读,来活儿就干,没活儿歇着应用场景:冗余:持久化的存储在队列中,后续由订单处理程序获取,处理完成...转载 2018-12-06 11:53:32 · 1802 阅读 · 0 评论 -
php断点续传
php实现断点续传,就需要把大文件分割成多个小文件,然后单个上传。传完后在合并。│ merge.php –合并文件脚本│ merge.zip –合并后文件│ socket.zip –需要分割的文件│ split.php –分割文件脚本│└─split –分割后小文件目录下面是源码split.php:$fp = fopen("socket.zip", "rb");$filesiz...转载 2018-12-06 11:46:01 · 408 阅读 · 0 评论 -
PHP生成短链接的方法
正常的网址带上参数的那种可能会很长,尤其是我们在印刷纸质品如企业宣传册中要印上某个长的url的话非常难看,而且也没几个人会去记这个网址,虽然现在可以用扫二维码的方式打开长网址。但是人们可以使用短网址来实现优美的链接,尤其是有字数限制的应用如微博。短网址的实现原理就是有一个数据表会配置文件将短网址和实际网址进行对应,当请求某个短网址时,程序跳转到对应的实际网址上去,从而实现网址的访问。方案1:...转载 2018-11-28 09:28:35 · 5624 阅读 · 0 评论 -
php压缩图片
在项目开发过程中少不了会用到图片上传功能,考虑到服务器带宽及磁盘空间,需要对图片进行压缩。前端的压缩可以节约带宽,后端的压缩可以节省磁盘空间。function resizeImage($source,$percent=0.5){ if(empty($source)){ return false; } //获取原图宽高,图片...原创 2018-11-30 11:36:47 · 931 阅读 · 0 评论 -
smarty模板引擎工作原理
1、模板引擎是什么展示给用户的页面由数据及承载数据的标签组成,标签就是html,而数据就是由php处理的变量,这样就涉及到了前端和后端的交互,模板引擎就是将php代码与html代码分离的技术。smarty是最常用的php模板引擎,由zend公司使用php编写的一套模板引擎。2、模板引擎的工作原理模板引擎的工作原理就是php代码可以嵌套html标签。在不使用模板引擎的时候,我们可以通过这样...原创 2018-11-24 10:45:04 · 1504 阅读 · 0 评论