
PHP
文章平均质量分 53
PHP
echojson
雄鹰在鸡窝里长大,就会失去飞翔的本领,野狼在羊群里成长,也会爱上羊而丧失狼性。人生的奥妙就在于与人相处。生活的美好则在于送人玫瑰。和聪明的人在一起,你才会更加睿智。和优秀的人在一起,你才会出类拔萃。所以,你是谁并不重要,重要的是,你和谁在一起。
展开
-
电商系统架构全链路解析
1、电商系统可能是世界上最复杂的业务系统说个有意思的小事,和一位PM同行聊工作,问我电商做的如何,我说并不是一件易事。对方哈哈一笑,说电商不就那么回事吗,有啥难的,是个PM都能做,我嘿嘿一笑,不作辩解。光说中国电商,发展至今已有20多年的历史,且一直处于高速的发展和竞争当中,时至今日,都不可妄语尘埃落定,对于大型公司来说,电商仅为销售渠道之一,而在此基础上衍生出来的研、产、供、销、服整套的信息系统体系,才是支撑其运作的核心。当你从销售或是用户这个点来看电商,会觉得无比简单,而当你从整个体系的面来看电原创 2020-07-15 17:36:15 · 1794 阅读 · 0 评论 -
深入理解:str_replace & strtr
$search = [ 'xyz', '123' ]; $replace = [ '123', '@@@' ];//$str = '#xyz123#';//循环替换$ret1 = str_replace($search, $replace, $str); //#@@@@@@#//对位元素替换$ret2 = strtr($str, ['xyz' => '123', '123' => '@@@']); //#123@@@#//按 char 位替换原创 2020-07-03 15:51:35 · 183 阅读 · 0 评论 -
php 内置的 web 服务器 php -s
从 PHP 5.4.0 起,PHP内置了Web服务器,这对于认为需要Apache或Nginx才能预览PHP应用的开发者来说又是一个隐藏功能。这个内置的Web服务器不应该用于生产环境,但对于本地开发来说是个极好的工具。Laravel Valet 起初就是使用这个内置的服务器,但是在1.1.0版本后将其替换为Caddy(查看相关新闻)。1、启动这个内置的Web服务器很容易启动,打开终端(Windows下对应是cmd命令行),进入项目根目录,执行如下命令即可:php -S localhost:8000 #原创 2020-05-14 10:13:31 · 493 阅读 · 0 评论 -
PHP foreach原理详解
当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。如果移动指针的结果超出了数组单元的末端,则退出循环。例子:$array = [ 'name' => 'Jobs', 'age' => 50,];foreach ($array as $key => $value) { $value = 22; //赋值,但是没有影响到$array[$key]位置的值,除非加上 $array[$key] = $value;}上面的foreach原创 2020-05-14 10:09:17 · 439 阅读 · 0 评论 -
前端提交大量数组至PHP后台,后台接受数据会被截断
默认值php接受接受1000个元素,解决办法:修改php.ini中的max_input_vars ,表单提交数据上限原创 2020-05-12 11:10:58 · 466 阅读 · 0 评论 -
Nginx下出现Access denied (403) see security.limit_extensions错误的解决方法
采用nginx+php作为webserver的架构模式,在现如今运用相当广泛。然而第一步需要实现的是如何让nginx正确的调用php。由于nginx调用php并不是如同调用一个静态文件那么直接简单,是需要动态执行php脚本。本文的主要内容为如何在nginx server中正确配置php调用方法,以及配置的基本原理。知道了配置和基本原理后,我们也就知道了他们之间是怎么通信的。一、普及N...原创 2020-05-09 17:42:33 · 807 阅读 · 0 评论 -
curl请求,服务器接受curl发送的数据
模拟一个服务器(Client)向另外一个服务器(Serve)发送数据,另外一个服务器接受数据1. 本地起一个PHP服务(服务器一)php -S 192.168.0.102:8888 C:\Users\laozhongyi\Desktop\phpService.php或者写一个bat ,名为 phpService.bat:: php 启动一个web服务:: 192.168.0.102 ...原创 2020-05-08 10:32:43 · 1468 阅读 · 0 评论 -
理解:同步、异步、阻塞与非阻塞
四、同步、异步、阻塞与非阻塞4.1、引言近来遇到了一些常见的概念,尤其是网络编程方面的概念,如:阻塞、非阻塞、异步I/O等等,对于这些概念自己也没有太清晰的认识,只是很模糊的概念,说了解吧也了解,但是要让自己准确的描述概念方面的具体细节,却说的不那么准确,这也是自己在这几个方面也没有细细考究过的原因吧。经过看了些这几个概念的资料,发现同步、异步、阻塞、非阻塞的概念其实也并不难以理解,在此写...原创 2020-05-08 10:32:10 · 221 阅读 · 0 评论 -
PHP 的 CGI、FastCGI、PHP-FPM
一、案例分析1.1、分析当 Web Server 收到 index.php 这个请求后,会启动对应的 CGI 程序,这里就是 PHP 的解析器。接下来 PHP 解析器会解析 php.ini 文件,初始化执行环境,然后处理请求,再以规定 CGI 规定的格式返回处理后的结果,退出进程,Web server 再把结果返回给浏览器。这就是一个完整的动态 PHP Web 访问流程,接下来再引...原创 2020-05-08 10:31:35 · 243 阅读 · 0 评论 -
swoole
一、前言1.1、什么是 swooleswoole是基于C开发的一个php扩展,类似你熟悉的Mysqli、cURL等等。swoole的作用,其实更多的是解决php在某些方面的缺陷(当然,php是最好的语言),比如即时通讯、异步任务、消息队列等等。Swoole是PHP语言的高性能网络通信框架,提供了PHP语言的异步多线程服务器,异步TCP/UDP网络客户端,异步MySQL,数据库连接池...原创 2020-05-08 10:28:56 · 724 阅读 · 0 评论 -
API
一、理解RESTful架构越来越多的人开始意识到,网站即软件,而且是一种新型的软件。这种"互联网软件"采用客户端/服务器模式,建立在分布式体系上,通过互联网通信,具有高延时(high latency)、高并发等特点。网站开发,完全可以采用软件开发的模式。但是传统上,软件和网络是两个不同的领域,很少有交集;软件开发主要针对单机环境,网络则主要研究系统之间的通信。互联网的兴起,使得这两个领...原创 2020-05-08 10:21:31 · 563 阅读 · 0 评论 -
PHPER 之路
一、php 高级程序员所要掌握的技能很多工作几年的 php 开发者都会有这样的迷茫,php 开发多了,无外乎“增删改查调接口”,真的是这样吗?实际上开发者除了把自己当成 php 程序员,更应该关注 php 以外的东西,将自己定位于能熟练使用 php 搭建系统的工程师。我认为高级 php 工程师可以往几个方向去发展:1.1、深度方向一个工程师要往高阶发展,必须同时强化几个...原创 2020-05-08 10:19:46 · 514 阅读 · 0 评论 -
PHP composer
一、composer 快速入门1.1、composer 是什么① composer 是 PHP 的一个依赖管理工具②安装composer③ 资源插件:解决 js、css 的依赖的:composer. global require "fxp/composer-asset- plugin:^1.2.0"1.2、composer、github、packagist 之间的关系例如...原创 2020-05-08 10:28:10 · 386 阅读 · 0 评论 -
PHP中Trait详解及其应用
从PHP的5.4.0版本开始,PHP提供了一种全新的代码复用的概念,那就是Trait。Trait其字面意思是”特性”、”特点”,我们可以理解为,使用Trait关键字,可以为PHP中的类添加新的特性。熟悉面向对象的都知道,软件开发中常用的代码复用有继承和多态两种方式。在PHP中,只能实现单继承。而Trait则避免了这点。下面通过简单的额例子来进行对比说明。1. 继承 VS 多态 VS T...原创 2018-05-05 17:46:47 · 1579 阅读 · 0 评论 -
ArrayObject的使用
ArrayObject是将数组转换为数组对象。代码示例<?php //打印全部数组元素$array =array('1'=>'one', '2'=>'two', '3'=>'three');$arrayobject = new ArrayObject($array);//构造一个ArrayObject对象for($iterator= $arrayobj...原创 2018-06-09 15:31:25 · 5526 阅读 · 0 评论 -
php闭包(匿名函数)中的use用法
php的闭包(Closure)也就是匿名函数。是PHP5.3引入的。闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。匿名函数中的use,其作用就是从父作用域继承变量。下例是最常见的用法,如果不使用use,匿名函数中将找不到变量$msg$msg = [1,2,3];$func = function()use($msg){ print_r($m...原创 2018-06-09 15:10:26 · 13511 阅读 · 2 评论 -
PHP高级——抽象类与接口
一、 抽象类abstract class抽象类是指在 class 前加了 abstract 关键字且存在抽象方法(在类方法 function 关键字前加了 abstract 关键字)的类。抽象类不能被直接实例化。抽象类中只定义(或部分实现)子类需要的方法。子类可以通过继承抽象类并通过实现抽象类中的所有抽象方法,使抽象类具体化。如果子类需要实例化,前提是它实现了抽象类中的所有抽象方法。如果...原创 2018-04-28 10:16:42 · 178 阅读 · 0 评论 -
进程和线程
进程和线程有什么区别从概念上:进程:一个程序对一个数据集的动态执行过程,是分配资源的基本单位。线程:一个进程内的基本调度单位。线程的划分尺度小于进程,一个进程包含一个或者更多的线程。从执行过程中来看:进程:拥有独立的内存单元,而多个线程共享内存,从而提高了应用程序的运行效率。线程:每一个独立的线程,都有一个程序运行的入口、顺序执行序列、和程序的出口。但是线程不能够独立的执行,必须依存在应用程序中,...原创 2018-04-13 14:53:58 · 153 阅读 · 0 评论 -
设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式) 被腾讯笔试打击到了,腾讯笔试的设计模式题目都没有做对过,所以我要学习下设计模式,就买了入门的《大话设计模式》这本书。我从昨天下午开始看这本书,今天中午看完,发现这本书浅显易懂,作为入门读物还是不错的。 好脑子不如烂笔头,我还是将所学的东西记载下来,供我以后来看吧。简单原创 2018-03-27 19:16:20 · 206 阅读 · 0 评论 -
php实现多进程、多线程
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。 僵尸进程危害:如原创 2018-04-13 15:33:00 · 664 阅读 · 0 评论 -
php中stdClass
stdClass是一个内置类,它没有成员变量,也没有成员方法的一个类,new一个stdClass就是实例化了一个『空』对象,它本身没什么意义,但是用stdClass定义有什么好处呢?很多地方使用stdClass来定义一个对象(而通常是用数组的方式),然后使用get_object_vars来把定义的对象『转换』成数组.$tanteng = new stdClass();$tanteng...原创 2018-06-09 15:55:27 · 974 阅读 · 0 评论 -
iterable 迭代器
iterable 迭代器TraversableTraversable用于检测一个类是否可以使用 foreach 进行遍历,这是一个无法在 PHP 脚本中实现的内部引擎接口,实际编程中我们使用Iterator接口或者IteratorAggregate接口来实现遍历。Traversable 重要的一个用处就是判断一个类是否可以遍历,下面是官方例子:if( !is_array( ...原创 2018-06-09 16:48:45 · 530 阅读 · 0 评论 -
ArrayAccess(数组式访问)接口
提供像访问数组一样访问对象的能力的接口。ArrayAccess {/* 方法 */abstract public boolean offsetExists ( mixed $offset )abstract public mixed offsetGet ( mixed $offset )abstract public void offsetSet ( mixed $offset , m...原创 2018-06-09 18:59:27 · 525 阅读 · 0 评论 -
PHP闭包 function() use(){}作用
php的闭包(Closure)也就是匿名函数。是PHP5.3引入的。闭包的语法很简单,需要注意的关键字就只有use,use意思是连接闭包和外界变量。$func =function() use ($param) { }闭包的几个作用:减少foreach的循环的代码// 一个基本的购物车,包括一些已经添加的商品和每种商品的数量。 // 其中有一个方法用来计算购物车中所...原创 2018-06-09 19:38:16 · 3336 阅读 · 1 评论 -
IoC 控制反转
IoC是什么Ioc—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在Java开发中,Ioc意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。如何理解好Ioc呢?理解好Ioc的关键是要明确“谁控制谁,控制什么,为何是反转(有反转就应该有正转了),哪些方面反转了”,那我们来深入分析一下:我们再来看看,控制反转(IOC)到底为...原创 2018-07-26 17:56:22 · 2205 阅读 · 0 评论 -
Php面向对象中static静态属性和静态方法的调用
Php面向对象中static静态属性和静态方法的调用结论:(1)静态属性不需要实例化即可调用。因为静态属性存放的位置是在类里,调用方法为"类名::属性名",不能通过 “object->属性 调用”;(2)静态方法不需要实例化即可调用。同上(3)静态方法不能调用非静态属性。因为非静态属性需要实例化后,存放在对象里;(4)非静态方法可以调用静态属性和静态方法,前提是使用self关...原创 2018-07-30 15:41:28 · 1311 阅读 · 0 评论 -
PHP错误与异常处理
没有特殊说明:本例 PHP Version < 7说起PHP异常处理,大家首先会想到try-catch,那好,我们先看一段程序吧:有一个test.php文件,有一段简单的PHP程序,内容如下,然后命令行执行:php test.php<?php $num = 0; try { echo 1/$num; } catch (Excepti...原创 2018-08-31 17:33:19 · 679 阅读 · 0 评论 -
php的错误级别
error_reporting()用于设置 PHP 的报错级别并返回当前级别。(PHP 4, PHP 5)函数能够在运行时设置 error_reporting 指令。PHP 有诸多错误级别,使用该函数可以设置在脚本运行时的级别。如果没有设置可选参数 level, error_reporting() 仅会返回当前的错误报告级别。 参数level 新的 error_r...原创 2018-08-31 17:36:33 · 1059 阅读 · 0 评论 -
PHP面向对象_对象克隆clone和魔术方法__clone()
1.对象克隆 clone PHP4面向对象功能一个很大的缺点,是将对象视为另一种数据类型,这使得很多常见的OOP方法无法使用,如设计模式。这些方法依赖于将对象作为引用传递给其他类方法,而不是作为值传递,而按值传递却是PHP的默认做法。幸好,PHP5解决了这个问题,现在所有对象在默认情况下都被视为引用。但是,由于所有对象都被视为引用而不是值,所以现在复制对象更为困难。如果尝试复制一个引用的对象...原创 2018-08-21 18:41:27 · 314 阅读 · 0 评论 -
php 实现同一个账号同时只能一个人登录
有点类似QQ,二台电脑登录,一台会把另一台挤掉线,并提示其他地点登录信息。一,实现原理1,用户在电脑A登录,session信息存放在redis当中,并将session_id存到mysql数据库中。2,同一用户在电脑B登录,验证完用户名和密码后,将该用户信息从数据库读出,取得用户在电脑A登录的session_id,然后在到redis中验证session是否过期。3,如果过期,不用op原创 2015-04-16 12:29:02 · 3375 阅读 · 0 评论 -
is_callable()与method_exists()函数
我们经常能够看到以下这种用法,它用来检查一个对象里的方法是否存在<?phpif (method_exists($object, 'SomeMethod')) { $object->SomeMethod($this, TRUE); }?> 不管方法是否可见(private,protected),method_exists 否会返回 TRUE如果...原创 2018-05-02 21:14:39 · 855 阅读 · 0 评论 -
PHP的pcntl多进程用法实例
设我想要启动20个进程,将1-80w的数据分成20份来做,主进程等待所有子进程都结束了才退出:$max = 800000;$workers = 20;$pids = array();for($i = 0; $i < $workers; $i++){ $pids[$i] = pcntl_fork(); switch ($pids[$i]) { case -1:原创 2018-04-13 12:14:17 · 835 阅读 · 0 评论 -
PHP后台守护进程的实现方式(Linux环境)
应用场景某些情况下,我们需要持续的周期性的提供一些服务,比如监控内存或cpu的运行状况,这些应用与客户端是没有关系的,不是说客户端(如web界面,手机app等)关闭了,我们就不监控内存或cpu了,为了应对这种业务场景,后台守护进程就可以派上用场了。所需环境Linux实现方式1. 准备php脚本在/usr/local/src/目录下,新建一个daemon.php脚本文件,内如如下:[php] vie...原创 2018-04-13 12:01:18 · 695 阅读 · 0 评论 -
细说flush、ob_flush的区别
ob_flush/flush在手册中的描述, 都是刷新输出缓冲区, 并且还需要配套使用, 所以会导致很多人迷惑…其实, 他们俩的操作对象不同, 有些情况下, flush根本不做什么事情..ob_*系列函数, 是操作PHP本身的输出缓冲区.所以, ob_flush是刷新PHP自身的缓冲区.而flush, 严格来讲, 这个只有在PHP做为apache的Module(handler或者filter)安装...原创 2018-03-25 14:59:10 · 714 阅读 · 0 评论 -
PHP定界符eof 的使用
PHP是一个Web编程语言,在编程过程中难免会遇到用echo来输出大段的html和javascript脚本的情况,如果用传统的输出方法 ——按字符串输出的话,肯定要有大量的转义符来对字符串中的引号等特殊字符进行转义,以免出现语法错误。如果是一两处还可以容忍,但是要是一个完整的 html文本或者是一个100行的js我想是谁都会崩溃的。这就是PHP为什么要引入一个定界符的原因——至少一原创 2018-03-25 14:57:24 · 1281 阅读 · 0 评论 -
set_include_path和get_include_path用法详解
今天在公司研习源码时,看到了set_include_path(dirname(__FILE__));这样一行代码,甚为不解。于是我就百度了一下,顺便看了一下php.net的手册,可是还是不太明白它到底有什么作用。 偶然见看到一段另外一段代码,然后突发灵感,测试了一下,果然不出所料! 现在我总结一下吧: 首先set_include_path这个函数呢,是在脚本里动态地对PHP原创 2014-05-30 17:21:23 · 633 阅读 · 0 评论 -
pcntl_fork安装以及实现PHP多进程
PHP有个pcntl_fork的函数可以实现多进程,但要加载pcntl拓展,而且只有在linux下才能编译这个拓展,有时间在ubuntu下玩了下。 1.首先在ubuntu下编译pcntl.so,我的ubuntu下找不到pcntl的包,于是创建一个文件夹下载了整个PHP包,在里面找到了pcntl包运行如下命令# mkdir php原创 2014-03-12 17:17:31 · 1280 阅读 · 0 评论 -
pcntl_fork实现PHP多进程
首先安装pcntl扩展 /home/jerry/Public/php-5.4.0/ext/pcntlint pcntl_fork ( void )pcntl_fork()函数创建一个子进程,这个子进程仅PID(进程号) 和PPID(父进程号)与其父进程不同。成功时,在父进程执行线程内返回产生的子进程的PID,在子进程执行线程内返回0。失败时,在 父进原创 2014-03-12 17:20:50 · 844 阅读 · 0 评论 -
php字符串处理函数大全
1.addcslashes— 在指定字符前面添加反斜线转义字符eg.addcslashes('abc','a') 结果:\abc addcslashes('abc','a..z') 结果\a\b\c 备注:表示字符串范围:如,a..z 、 A..Z 、 a..h2.stripcslashes — 删除由 addcslashes() 函数添加的反斜杠原创 2014-03-20 22:35:34 · 546 阅读 · 0 评论 -
php word 转 html
要想完美解决,office转pdf或者html,最好还是用windows office软件,libreoffice不能完美转换,wps没有api。先确认com模块是不是开启,phpinfo里面如果有com_dotnet模块,说明已开启,如果没有,修改php.ini,com.allow_dcom = true前面的注释去掉,重启就OK了,php官方网站说,php5.4.5之前,c原创 2015-04-16 12:14:46 · 1613 阅读 · 0 评论