
PHP
文章平均质量分 80
_xiaoxiong
这个作者很懒,什么都没留下…
展开
-
Xdebug 2升级到3指南
官方文档:https://xdebug.org/docs/upgrade_guide升级指南,详细介绍了Xdebug 2和3之间的哪些更改,以及如何重新配置您的设置以执行类似的操作。新概念#与Xdebug 2不同,在Xdebug 2中,每个功能都有一个启用设置,使用Xdebug 3,您可以将Xdebug置于特定 模式下,可以使用xdebug.mode设置对其进行配置。此设置与xdebug.start_with_request结合使用是启用功能以及配置Xdebug功能激活时间的新方法。其背后的想翻译 2021-05-18 11:59:03 · 1700 阅读 · 0 评论 -
使用PHP实现一个简单web服务器
来展示下原创 2020-06-29 17:29:38 · 2197 阅读 · 0 评论 -
php获取数组第一个和最后一个元素的key
PHP 7.3.0之前的版本获取数组第一个和最后一个元素的key,的几种方法。$a = [ 'one' => 1, 'two' => 2, 'three' => 3];方法一$first = reset($a);$first_key = key($a);$last = end($a);$last_key = key($a);方法二$keys = array_keys($a);$first = reset($keys);$last = end原创 2020-06-10 10:23:40 · 3152 阅读 · 0 评论 -
php Bug #74166 IPv6 forced to be enabled
在docker容器中运行php7.1启动时报如下错误。php-fpm | [04-Apr-2020 07:47:15] ERROR: failed to create new listening socket: socket(): Address family not supported by protocol (97)php-fpm | [04-Apr-2020 07:47:15...原创 2020-04-04 08:15:19 · 683 阅读 · 0 评论 -
php date()函数参数速查表
使用php date(‘Y-m-d H:i:s’,time())获取时间不对,差8小时。其实不是PHP获取日期时间不对,主要是时区没有选择好。选择中国时间时间就对上了。有以下两种方法解决可以在程序中加上 date_default_timezone_set(‘PRC’);修改php.ini date.timezone =“PRC”:-:-格式字串可以识别以下 fo...原创 2020-04-03 14:46:15 · 574 阅读 · 0 评论 -
Cannot find OpenSSL
Cannot find OpenSSL's 安装php扩展时,出错了。报错信息Cannot find OpenSSL’s <evp.h>。安装opensslsudo apt-get install -y autoconf g++ make openssl libssl-dev libcurl4-openssl-devsudo apt-get install -y libcurl...原创 2020-01-07 13:25:59 · 578 阅读 · 0 评论 -
php curl带有csrf-token验证模拟提交方法
通常为了安全会在表单里加入一个随机的token值来防止csrf攻击。 要想模拟提交有token验证的网站其实也不难。1.获取token 2.带上获取到的token模拟提交下面是一个成功的例子 目录结构│ form.php –需要模拟的表单 │ getForm.php – 模拟提交程序 │ post.php –表单验证程序 │ └─cookie原创 2016-10-18 10:09:05 · 8962 阅读 · 0 评论 -
php接口上传文件
Example #2 上传文件<?php/* http://localhost/upload.php:print_r($_POST);print_r($_FILES);*/$ch =curl_init();$data = array('name'=>'Foo','file'=>'@/home/user/test.png');curl_setopt($ch,CURLOPT_U原创 2014-12-24 09:07:29 · 2860 阅读 · 0 评论 -
简单实用的php爬虫系统
通过简单的配置就爬取到网页内容,本系统放在github上欢迎有需要人朋友使用。 https://github.com/vip6111111/crawl程序只支持CLI安装程序1.修改dbconfig.php成自己数据库配置2.执行 php index.php install安装完成后,需要添加来源站点及提取规则,setting, setting 表。添加完使用来执行 php index.php原创 2016-09-09 10:14:59 · 12154 阅读 · 0 评论 -
Yii控制器直接校验系统验证码
yii 自带验证码,通常都是在model validate验证的。有时觉得那样太麻烦,直接在控制器验证。使用下面方法就行了。$verifyCode = CHtml::encode($this->_request->stripSlashes(trim($this->_request->getParam( 'verifyCode' ))));$captcha = Yii::app()->getCont原创 2017-06-12 13:30:56 · 1272 阅读 · 0 评论 -
Cannot launch PHPUnit tests (port address 7478)
zendstudio使用phpunit出来以下错误Cannot launch PHPUnit tests (pot address 7478): Accept timed out我原来还有其他PHP错误以这种方式展现。后来检查下的控制台,发现具体错误。原创 2017-01-05 17:00:28 · 2422 阅读 · 2 评论 -
Thinkphp404页面设置
Controller 增加 EmptyController.class.php<?phpnamespace Frontend\Controller;use Think\Controller;class EmptyController extends Controller { function _empty(){ header("HTTP/1.0 404 Not Foun原创 2017-06-29 10:28:18 · 1468 阅读 · 0 评论 -
composer安装失败解决方法
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355原创 2017-06-03 09:10:05 · 16811 阅读 · 0 评论 -
PHP中static静态变量的使用
<?phpfunction test() { static $nm = 1; $nm *= 2; print $nm."\n"; }// 第一次执行,$nm = 2 test(); // 第一次执行,$nm = 4 test(); // 第一次执行,$nm = 8 test();?>添加了static修饰符的变量即使在该函数执行完毕值仍然不会丢失,也原创 2016-07-18 09:46:00 · 2956 阅读 · 0 评论 -
php session读写锁引起的脚本阻塞问题
项目中经常会遇到session引起的脚本阻塞问题。比如一个需要操作session的页面接口长时间不响应,会导致其他操作session的页面也打不开。一直到接口响应或者超时才能操作其他。还有就是用session做登录的页面需要大量时间去执行数据库操作时间也会引起的脚本阻塞。在session_start()后 对应的session文件是被锁定的,直到当前脚本结束才会解锁。在锁定期间另一个进程访问相同session id需要等session解锁后,才能开始读写session.解决这个问题就是在 session原创 2015-04-26 22:22:52 · 3354 阅读 · 0 评论 -
Yii连接多个库的问题
使用以下配置可以连接两个mysql的数据库'db'=>array( 'connectionString' => 'mysql:host=localhost;dbname=test', 'emulatePrepare' => true, 'username' => 'root', 'password' =>原创 2017-01-25 10:15:43 · 1953 阅读 · 0 评论 -
Yii2中多表关联查询hasOne hasMany
表positionContent id position_id content_title content_id is_recommend list_sort update_time create_time 10 14 大成创新成长 160910 1 1 2017-02-09 11:51:56 2017-02-09 11:51:56原创 2017-02-14 10:35:47 · 4401 阅读 · 0 评论 -
php如何支持多进程
php多进程安装 在PHP中进程控制支持默认是关闭的。您需要使用 –enable-pcntl 配置选项重新编译PHP的 CGI或CLI版本以打开进程控制支持。 Note: 当前,这个模块没有非Unix平台可用的函数(即非Unix类系统不支持此模块)。 sh-3.2# cd php-5.5.35/ext/pcntl /usr/local/php55/bin/phpizesh-3.2# php原创 2017-01-24 23:25:48 · 1878 阅读 · 0 评论 -
php类与对象之后期静态绑定
做项目是后期静态绑定非常有用。比如service层单例模式,使用后期静态绑定就非常好实现。自 PHP 5.3.0 起,PHP 增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类。准确说,后期静态绑定工作原理是存储了在上一个“非转发调用”(non-forwarding call)的类名。当进行静态方法调用时,该类名即为明确指定的那个(通常在 :: 运算符左侧部分);当进行非静态方法调用原创 2017-02-06 19:51:24 · 2254 阅读 · 0 评论 -
nginx多个php项目间互相调用出现错误
同一个nginx下两个不同的项目,互相调用(一个项目是服务端,一个是客户端)出现错误。原创 2016-11-02 14:13:24 · 3119 阅读 · 0 评论 -
PHP7 YMAL扩展安装详细过程
我的php版本是php7具体如下。PHP 7.0.1 (cli) (built: Dec 16 2015 13:36:28) ( NTS )Copyright (c) 1997-2015 The PHP GroupZend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies with Xdebug v2.5.0, Copyri原创 2017-09-18 17:03:59 · 2524 阅读 · 0 评论 -
使用websocket实现php消息实时推送完整示例
php实现websocket实时消息推送 SocketService.php<?php/** * Created by xwx * Date: 2017/10/18 * Time: 14:33 */class SocketService{ private $address = '0.0.0.0'; private $port = 8083; private $原创 2017-10-18 16:01:51 · 24993 阅读 · 10 评论 -
如何理解装饰者(Decorator)设计模式
装饰者模式是对原有类进行多次附加,比单纯的继承更加灵活的组和。本例参照网上黄焖鸡点加小菜的实例来讲解。生活中不同的人喜欢加不一样的小菜,如不用装饰者模式,肯定要加一堆的if else。长期下去不利于代码的维护。菜品抽象类abstract class Food { public $desc = "菜品"; public $price = 0; public function getP...原创 2019-09-30 09:38:44 · 208 阅读 · 0 评论 -
array与splFixedArray数组结构比较
php中的array非常强大、灵活的类型。使用HashTable实现的。HashTable的数据结构://Bucket:散列表中存储的元素typedef struct _Bucket {zval val; //存储的具体value, 这里嵌入了一个zval, 而不是一个指针zend_ulong h; //key根据times 33计算得到的哈希值, 或者是数值索引编号zend_stri...原创 2019-05-24 17:13:02 · 398 阅读 · 0 评论 -
VLD扩展使用方法
VLD(Vulcan Logic Dumper)是一个挂钩在Zend引擎下, 并且输出PHP脚本生成的中间代码(OPCode)的扩展。 它可以在一定程序上查看Zend引擎内部的一些实现原理。VLD扩展是一个开源的项目下载地址<?php$start = new DateTime();echo $start->format("Y-m-d H:i:s");使用VLD查看OPCod...原创 2019-04-20 10:22:47 · 1058 阅读 · 0 评论 -
Yii Model fields()方法如何使用
修改字段名称可以把原蛇行命名改成驼峰式的public function fields(){ return [ 'email_address' =&amp;gt; 'emailAddress', ];}删除一些包含敏感信息的字段public function fields(){ $fields = parent::fields(); ...原创 2019-03-01 11:31:17 · 3322 阅读 · 0 评论 -
windows环境下使用docker搭建lnmp开发环境
docker run -p 3306:3306 --name mysql -v d:/docker/mysql/conf:/etc/mysql/conf.d -v d:/docker/mysql/logs:/logs -v d:/docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7 docker ...原创 2018-11-28 21:25:34 · 3068 阅读 · 0 评论 -
php-fpm 平滑重启 开启 关闭
先看看下面几个命令INT, TERM 立刻终止QUIT 平滑终止USR1 重新打开日志文件USR2 平滑重载所有worker进程并重新载入配置和二进制模块示例1. pkill php-fpm 强制关闭2. kill -INT `cat /usr/local/php/var/run/php-fpm.pid` 3. /usr/local/php/sbin/php-fpm 启动 ...原创 2018-04-23 17:03:02 · 7550 阅读 · 0 评论 -
php7使用MongoDB
安装打开网址: https://pecl.php.net/package/mongodb 选择适合自己的版本 打开php.ini 添加extension=php_mongodb.dll查看是否安装成功php -m|findstr mongodbmongodb写个测试例子php7需要使用全新的api跟之前版本不一样$bulk = new MongoDB\Driver\BulkWrite();原创 2017-10-26 10:23:14 · 7170 阅读 · 0 评论 -
PHP编码规范之PSR-4自动加载
FIG制定的PHP规范,简称PSR,是PHP开发的事实标准。PSR原本有四个规范,分别是:PSR-0 自动加载 PSR-1 基本代码规范 PSR-2 代码样式 PSR-3 日志接口 PSR-4 自动加载1. 概述这个PSR描述了从文件路径自动加载类的规范。除了包括PSR-0在内的其他自动加载规范外,还可以使用。 这个PSR还描述了根据规范放置文件的位置。2. 规范术语“类”是指 class翻译 2018-01-02 11:30:32 · 1003 阅读 · 0 评论 -
Yaf框架PHPUnit集成测试方法
测试目录test├── TestCase.php├── bootstrap.php├── controller│ ├── BaseControllerTest.php│ └── IndexControllerTest.php├── model├── phpunit.xml└── service └── TokenServiceTest.phpphpunit.xml原创 2017-12-26 11:31:38 · 1616 阅读 · 0 评论 -
php函数动态传入参数个数
PHP 在用户自定义函数中支持可变数量的参数列表。 在 PHP 5.6 及以上的版本中,由 … 语法实现; 在 PHP 5.5 及更早版本中,使用函数 func_num_args(),func_get_arg(),和 func_get_args() 。在PHP 5.6和更高版本中,参数列表可能包括…符号,表示该函数接受变量数目的参数。参数将作为数组传递给给定的变量; 例如:<?php原创 2017-12-26 09:27:31 · 1429 阅读 · 0 评论 -
使用php-cs-fixer统一代码风格
安装使用最简单的方式安装下载php-cs-fixer包,直接配置在编辑器。 最新php-cs-fixer包windows 创建php-cs-fixer.batphp php-cs-fixer.phar fix --config=.php_cs.dist %~sf1pausemas\linux 创建 php-cs-fixer#!/bin/sh/usr/local/php7/bin/php -d原创 2017-12-13 09:50:04 · 10309 阅读 · 3 评论 -
如何发布自己的Composer包
想把自己的代码能用Composer发布,有以下步骤。1.在项目中创建一个 composer.json 2.在github在创建一个项目 (这是我自己的创建的 https://github.com/wxxiong6/tree,以下面以这个项目为例子) 3. 装包发布在 https://packagist.org 提交代码 提交完成后,会有项目的一些信息。 设置自动发布请原创 2017-06-04 15:30:06 · 4037 阅读 · 2 评论 -
yii2一个页面两个验证码校验问题
一个页面有两个验证码,如果使用同一个验证码会导致有一个失效。那么我们需要使用两个不同的验证码,具体实现请看下面– controller 控制器写两个验证码 也可以直接在控制器较难,也看Yii控制器直接校验系统验证码 public function actions() { return [ 'captcha' => [原创 2017-08-14 11:26:00 · 1572 阅读 · 0 评论 -
php设计模式之单例模式
单例模式的三个要点:1.需要一个保存类的唯一实例的静态成员变量private static $_instance; 2.构造函数和克隆函数必须声明为私有的,防止外部程序new类从而失去单例模式的意义private function __construct() { } private function __clone() { trigger_error('Clo原创 2017-02-06 20:21:02 · 1838 阅读 · 0 评论 -
php断点续传之乱序合并文件
昨天分享一个文件分割文件,按顺序合并的方法。 今天再分享一个乱序合并的方法。 分割成多个文件发送,由于网络原因并不上先发就能发接收到。所以我们不能按顺序合并。分割文件源码上一篇文章 (php断点续传之文件分割合并)merge2.php<?php$fileTotaiSize = filesize("socket.zip");$filelist = glob('./split/*socket*.t原创 2016-12-13 10:57:54 · 2357 阅读 · 0 评论 -
github使用教程
github是一个基于git的代码托管平台,付费用户可以建私人仓库,我们一般的免费用户只能使用公共仓库,也就是代码要公开。对于一般人来说公共仓库就已经足够了,而且我们也没多少代码来管理,O(∩_∩)O~。下面是我总结的一些简单使用方法,供初学者参考。1.注册账户以及创建仓库要想使用github第一步当然是注册github账号了。之后就可以创建仓库了(免费用户只能建公共仓库),Cre转载 2014-05-09 00:00:03 · 1478 阅读 · 0 评论 -
php7 memcache扩展及其他扩展安装
安装上最新的php7,安装扩展里总会遇到各种问题。 最使终使用最新的扩展地址才安装好了。This page holds everything we know about every extension we know about. Instructions for working with this page can be found on our main website.https://git原创 2015-12-29 15:23:03 · 17334 阅读 · 2 评论 -
++i与i++的区别在哪里?
i++ 与 ++i 的主要区别有两个: 1、 i++ 返回原来的值,++i 返回加1后的值。 2、 i++ 不能作为左值,而++i 可以。 毫无疑问大家都知道第一点(不清楚的看下下面的实现代码就了然了),我们重点说下第二点。 首先解释下什么是左值(以下两段引用自中文维基百科『右值引用』词条)。 左值是对应内存中有确定存储地址的对象的表达式的值,而右值是所有不是左值的表达式的值。 一般来说原创 2016-08-08 10:40:11 · 2332 阅读 · 0 评论