![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PHP
文章平均质量分 75
密斯特拉祖
driving instead of waiting, leading instead of following.
展开
-
PHP页面头部输出空白行部分原因
转自安静PHP技术博客作为Php-coder经常会遇到的莫过于浏览器样式错乱问题,当然这不是指csshack问题,在chrome下正常而在Ie类内核浏览器上显示不正常.很多时候你会在查看网页源码时看到距离上面会有一行换行,可查看所有加载过的Php代码并没有相关的换行空白符,通过复制源码用2进制文件打开后头部会有EFBBBF内容,恩,很不幸的告诉你你使用的编辑器自动给你的文件转载 2016-10-25 10:21:49 · 1387 阅读 · 0 评论 -
php性能的问题
一.影响php性能的常见原因1.php自身语法使用不当2.php做了不擅长的时期()3.php的周边环境(服务器Linux,磁盘:文件存储,数据库,缓存:内存,网络:带宽)4.php自身的短板5.未知问题二、分析PHP代码运行流程 *.php(PHP文件)->Scanner(扫描代码,分析)->Exprs(保存成zend引擎可以识别的文件)->Parser(解析)->Op...转载 2018-06-13 18:06:57 · 569 阅读 · 0 评论 -
浅谈php中使用websocket
在PHP中,开发者需要考虑的东西比较多,从socket的连接、建立、绑定、监听等都需要开发者自己去操作完成,对于初学者来说,难度方面也挺大的,所以本文的思路如下:1、socket协议的简介2、介绍client与server之间的连接原理3、PHP中建立socket的过程讲解4、用一个聊天室作为实例详细讲解在PHP中如何使用socket一、socket协议的简介 WebSocket是什么,有什么优...转载 2018-06-13 14:56:14 · 444 阅读 · 0 评论 -
解决PHP中的出现的错误处理以及异常处理机制的办法
本篇文章给大家分享的内容是解决PHP中的出现的错误处理以及异常处理机制的办法,有着一定的参考价值,有需要的朋友可以参考一下在编写PHP程序时,错误处理是一个重要的部分。如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门例:1234<?php $a = fopen('test.txt','r'); //这里并没有对文件进行判断就打开了,如果文件不存在就会报错?&...转载 2018-06-13 09:52:14 · 739 阅读 · 0 评论 -
性能方面考虑的因素
在上一节我们已经简单的提到:回收可能根有细微的性能上影响,但这是把PHP 5.2与PHP 5.3比较时才有的。尽管在PHP 5.2中,记录可能根相对于完全不记录可能根要慢些,而PHP 5.3中对 PHP run-time 的其他修改减少了这个性能损失。这里主要有两个领域对性能有影响。第一个是内存占用空间的节省,另一个是垃圾回收机制执行内存清理时的执行时间增加(run-time delay)。我们将...转载 2018-05-30 09:32:47 · 387 阅读 · 0 评论 -
引用计数基本知识
每个php变量存在一个叫"zval"的变量容器中。一个zval变量容器,除了包含变量的类型和值,还包括两个字节的额外信息。第一个是"is_ref",是个bool值,用来标识这个变量是否是属于引用集合(reference set)。通过这个字节,php引擎才能把普通变量和引用变量区分开来,由于php允许用户通过使用&来使用自定义引用,zval变量容器中还有一个内部引用计数机制,来优化内存使用...转载 2018-05-30 09:31:20 · 551 阅读 · 0 评论 -
回收周期(Collecting Cycles)
传统上,像以前的 php 用到的引用计数内存机制,无法处理循环的引用内存泄漏。然而 5.3.0 PHP 使用文章» 引用计数系统中的同步周期回收(Concurrent Cycle Collection in Reference Counted Systems)中的同步算法,来处理这个内存泄漏问题。对算法的完全说明有点超出这部分内容的范围,将只介绍其中基础部分。首先,我们先要建立一些基本规则,如果一...转载 2018-05-30 09:26:39 · 1086 阅读 · 0 评论 -
PHP垃圾回收机制理解
使用的是“引用计数”方式进行回收。简单地理解的话,就是每个分配的内存区域都有一个计数器,记录有多少个变量指针指向这片内存。当指向该片内存的指针数量为0,那么该片内存区域就可以被回收。 引用计数计数简单,强大,但是有一个致命的缺陷,就是环状引用。考虑以下的代码: Php代码 $a = array(); $a[] = &$a; unset($a); 变量$a引用了自己,形成了一个环。$a被un...转载 2018-05-30 09:21:09 · 136 阅读 · 0 评论 -
PHP并发IO编程之路
并发IO问题一直是服务器端编程中的技术难题,从最早的同步阻塞直接Fork进程,到Worker进程池/线程池,到现在的异步IO、协程。PHP程序员因为有强大的LAMP框架,对这类底层方面的知识知之甚少,本文目的就是详细介绍PHP进行并发IO编程的各种尝试,最后再介绍Swoole的使用,深入浅出全面解析并发IO问题。多进程/多线程同步阻塞最早的服务器端程序都是通过多进程、多线程来解决并发IO的问题。进...转载 2018-06-12 15:17:07 · 124 阅读 · 0 评论 -
centos7下编译安装php扩展
wget http://pecl.php.net/get/radius-1.3.0.tgztar -zxvf radius-1.3.0.tgzmv radius-1.3.0.tgz radius-1.3cd radius-1.3/usr/local/server/php/bin/phpize ./configure --with-php-config=/usr/local/php7/...原创 2018-07-10 00:25:35 · 1472 阅读 · 0 评论 -
centos7下用pecl安装php扩展
安装扩展之前先用pear设置php.ini的路径:/usr/local/php7/bin/pear config-set php_ini /usr/local/php7/etc/php.ini这样做的好处就是用pecl安装php扩展的时候,会自动在php.ini中引用扩展包,不用自己手动添加扩展包。1、安装yaf扩展:/usr/local/php7/bin/pecl install channel...转载 2018-07-10 00:29:13 · 3019 阅读 · 0 评论 -
PHP7下的协程实现
前言相信大家都听说过『协程』这个概念吧。但是有些同学对这个概念似懂非懂,不知道怎么实现,怎么用,用在哪,甚至有些人认为 yield 就是协程!我始终相信,如果你无法准确地表达出一个知识点的话,我可以认为你就是不懂。如果你之前了解过利用 PHP 实现协程的话,你肯定看过鸟哥的那篇文章:在 PHP 中使用协程实现多任务调度| 风雪之隅鸟哥这篇文章是从国外的作者翻译来的,翻译的简洁明...转载 2018-07-30 15:10:50 · 1757 阅读 · 1 评论 -
PHP扩展开发入门
写一个最简单的将字符串全部变成大写的函数:<?php function my_toupper($str) { return strtoupper($str); } echo my_toupper('demo');?>现在我们开发一个php扩展,实现my_toupper的功能。Step1: PHP提供了一个扩展框...转载 2018-07-30 14:50:07 · 242 阅读 · 0 评论 -
Opcode是啥以及如何使用好Opcache
啥是Opcode?我们在日常的PHP开发过程中,应该经常会听见Opcache这个词,那么啥是Opcode呢?Opcache 的前生是 Optimizer+ ,它是PHP的官方公司 Zend 开发的一款闭源但可以免费使用的 PHP 优化加速组件。 Optimizer+ 将PHP代码预编译生成的脚本文件 Opcode 缓存在共享内存中供以后反复使用,从而避免了从磁盘读取代码再次编译的时间消耗。...转载 2018-07-30 12:13:55 · 495 阅读 · 0 评论 -
PHP大数据处理要注意的
1. 传递值使用引用传递$a = get_large_array(); pass_to_function(&$a);这样是传递变量的引用而不是拷贝2.将大数据存在类的变量中class A { function first() { $this->a = get_large_array(); $this->pass_to_function(); } function pass_to...转载 2018-06-28 14:35:49 · 1497 阅读 · 0 评论 -
php对于浮点数的精确运算
在对浮点数进行 +-*/ 计算的时候,有时会遇到一些计算结果错误的问题,例如intval( 0.58*100); 打印结果是57,而不是58,这个其实是计算机底层二进制无法精确表示浮点数的一个bug。为什么出现这个bug?首先我们要知道浮点数的表示(IEEE 754:是IEEE二进位浮点数算数标准的编号),具体内容如下:浮点数,以64位的长度(双精度)为例,会采用1位符号位(E), 11指数位(Q...转载 2018-06-28 13:51:39 · 431 阅读 · 0 评论 -
使用phpize增加php模块
一,phpize的好处什么时候我们要用phpize呢?我们在安装php时:12345./configure --prefix=/apps/product/php --with-config-file-path=/apps/product/php/etc \--with-iconv-dir --with-freetype-dir --with-png-dir --with-zlib --with-l...转载 2018-07-10 01:01:58 · 534 阅读 · 0 评论 -
php三种工具pecl pear composer的区别
pearPEAR 是“PHP Extension and Application Repository”的缩写,即PHP扩展和应用仓库。PEAR 将PHP程序开发过程中常用的功能编写成类库,涵盖了页面呈现、数据库访问、文件操作、数据结构、缓存操作、网络协议、WebService 等许多方面,用户可以通过下载这些类库并适当的作一些定制以实现自己需要的功能。避免重复发明“车轮”。PEAR 的出现大大提...转载 2018-07-10 00:49:03 · 148 阅读 · 0 评论 -
或许是这5件事导致你的web性能低下
我们都知道服务器的负载能力的重要性,本文从5个可能影响负载能力的点上进行讨论。首先,有必要了解提高服务端PHP代码效率所需的关键操作。最重要的是对性能数据的收集,如果你想对某个地方进行优化,那么你需要测量优化前后的数据以进行对比。一般来说,程序的响应时间以及对内存的使用是比较重要的。对于PHP来说,大多数情况下,页面的加载时间是影响用户体验最大的一个环节。当然,还有其他的各种问题同样对性能有很大的...转载 2018-06-12 15:08:53 · 280 阅读 · 0 评论 -
使用HttpOnly提升Cookie安全性
在介绍HttpOnly之前,我想跟大家聊聊Cookie及XSS。随着B/S的普及,我们平时上网都是依赖于http协议完成,而Http是无状态的,即同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息,http是不会为了下一次连接而维护这次连接所传输的信息的。所以为了在每次会话之间传递信息,就需转载 2018-01-29 12:22:39 · 821 阅读 · 0 评论 -
从0到1优雅的实现PHP多进程管理
原文地址:https://segmentfault.com/a/1190000012234031业务场景在我们实际的业务场景中(PHP技术栈),我们可能需要定时或者近乎实时的执行一些业务逻辑,简单的我们可以使用unix系统自带的crontab实现定时任务,但是对于一些实时性要求比较高的业务就不适用了,所以我们就需要一个常驻内存的任务管理工具,为了保证实时性,一方面我们让它一转载 2017-12-24 00:30:29 · 1366 阅读 · 0 评论 -
PHP实现异步调用方法研究
作者: Laruence原文地址: http://www.laruence.com/2008/04/14/318.html浏览器和服务器之间是通过 HTTP 协议进行连接通讯的。这是一种基于请求和响应模型的协议。浏览器通过 URL 向服务器发起请求,Web 服务器接收到请求,执行一段程序,然后做出响应,发送相应的html代码给客户端。这就有了一个问题,Web 服务器执行一段转载 2017-12-24 00:27:10 · 288 阅读 · 0 评论 -
PHP解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法
如今在电商行业里,秒杀抢购活动已经是商家常用促销手段。但是库存数量有限,而同时下单人数超过了库存量,就会导致商品超卖甚至库存变负数的问题。又比如:抢购火车票、论坛抢楼、抽奖乃至爆红微博评论等也会引发阻塞式高并发问题。如果不做任何措施可能在高瞬间造成服务器瘫痪,如何解决这个问题呢?这里提出个人认为比较可行的几个思路方法:方案一:使用消息队列来实现可以基于例如MemcacheQ转载 2017-12-24 00:25:45 · 307 阅读 · 0 评论 -
爬虫php
地址:http://www.chinaz.com/web/2015/0930/452838.shtml代码托管地址:https://github.com/hhqcontinue/zhihuSpider文/Hector这次抓取了110万的用户数据,数据分析结果如下: 开发前的准备 安装linux系统(Ubuntu14.04),在转载 2017-12-24 00:24:00 · 300 阅读 · 0 评论 -
对比分析php中Cookie与Session的异同
一、cookie机制Cookies是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器。IETF RFC 2965 HTTP State Management Mechanism 是通用cookie规范。网络服务器用HTTP头向客户端发送cookies,在客户终端,浏览器解析这些cookies并将它们保存为一个本地文件,它会自动将同一服务器的任何请求缚上这些cookies 。转载 2018-03-12 23:26:56 · 148 阅读 · 0 评论 -
面向对象编程思想(OOP)
本文将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性、七大设计原则和23种设计模式之间的关系。软件开发中疑难问题:软件复杂庞大很多软件进入维护阶段需求的不断变更软件开发中存在很多其他的问题,上面只是从程序开发和设计的角度看到的部分问题。需求解决上面软件开发中的问题,就要求我们编写(设计)的软件具有很好的可读性、可维护性和可扩展性...转载 2018-05-18 16:09:07 · 1049 阅读 · 1 评论 -
php中对共享内存,消息队列的操作
PHP作为脚本程序,通常生命周期都很短,如在web应用中,一次请求就是php运行的一个周期,请求结束则生命周期截止。所以php在处理需要共 享的资源时,一般会将共享数据保存在数据库或dbm之类的文件中,再者就是利用内存实现共享。你可以选择已有的工具辅助你,像memcache;也可以自 己编写代码访问操作系统的共享内存段。php中对共享内存段的操作有两组函数:System V IPC和Shared ...转载 2018-06-12 15:05:10 · 570 阅读 · 0 评论 -
PHP共享内存使用场景及注意点
使用场景监控汇总目前正在用的一个场景,针对某一台机器上的错误进行汇总并报警,我们把一分钟之内的相同报警合并成一条,用共享内存来暂存,非常实用且高效。PHP SESSION如果你是单机的服务,且又启用了session,那么可以把session换成共享内存的来存储,会比文件要快上不少,这里还要强调是单机,这是最大的软肋,但就功能上来讲没有memcache方便。什么是共享内存共享内存是一种在同一台机器的...转载 2018-06-12 15:03:49 · 680 阅读 · 0 评论 -
PHP 类文件的自动加载机制 __autoload()
如果一个类在多个脚本中都需要使用,可以将一个类的定义代码,单独的封装到一个文件中,这种文件也叫作类文件,在需要的时候,将整个文件载入进来即可! PHP在执行的时候,如果发现需要一个类(只要是和这个类相关的任何的操作),但此时当前脚本又没有这个类的定义代码,也没有手动加载这个类文件,那么,PHP会自动的调用一个名字叫作__autoload($class_name)函数,调用的时候,会给该函数传递一个...转载 2018-05-29 10:39:28 · 623 阅读 · 0 评论 -
PDO异常处理
PDO提供了三种处理错误的方式PDO::ERRMODE_SILENT:静默模式(默认)PDO::ERRMODE_WARNING:警告模式PDO::ERRMODE_EXCEPTION:异常模式示例:<?php /*** 利用PDO对象实现异常处理操作*/echo "<meta charset=utf-8>";//PDO类的实例化// 1 设置数据源相关参数$d...转载 2018-05-29 10:12:30 · 495 阅读 · 0 评论 -
PHP异常处理
首先要发生异常!所谓的发生,指的是抛出一个异常!然后是处理异常!所谓的处理,就是一旦异常出现,要得到并处理这个异常,通常有两个阶段组成:监听和捕获!流程:1. 抛出异常 throw2. 监听异常 try3. 捕获异常 catch注意:这里的异常,其实就是一个异常对象,这个对象必须是由系统预定义的异常类(类名为Exception)或者其子类实例化出来的!示例:<?phpecho "<...转载 2018-05-29 10:10:21 · 75 阅读 · 0 评论 -
初探PHP多进程
准备我们都知道PHP是单进程执行的,PHP处理多并发主要是依赖服务器或PHP-FPM的多进程及它们进程的复用,但PHP实现多进程也意义重大,尤其是在后台Cli模式下处理大量数据或运行后台DEMON守护进程时,多进程的优势不用多说。PHP的多线程也曾被人提及,但进程内多线程资源共享和分配的问题难以解决。PHP也有多线程想关的扩展 pthreads ,但据说不太稳定,且要求环境为线程安全,所用不多。以...转载 2018-05-19 11:06:25 · 449 阅读 · 0 评论 -
PHP利用多进程处理任务
PHP多进程一般应用在PHP_CLI命令行中执行php脚本,不要在web访问时使用。 多进程处理分解任务一般要比单进程更快。 php查看是否安装多进程模块:php -m | grep pcntl(pcntl是process control的缩写) 创建子进程的函数fork,了解过C语言的同学应该都知道这个。php多进程的一些库函数手册:http://php.net/manual/zh/func...转载 2018-05-19 10:39:22 · 418 阅读 · 0 评论 -
设计模式原则
转自 http://www.cnblogs.com/gwysydw/archive/2010/12/02/2154852.html#top看了设计模式,最后看的总是感觉他们有很大的相似之处,就像是世界上万事万物都有其生存法则一样.仔细分析其实设计模式都是围绕一条主线来的。这就是设计模式的原则。你可以把设计原则比作一门语言。把设计模式当作这门语言编写出来的程序。如果你精通了语言剩下的编码就是很简单的...转载 2018-05-18 16:10:55 · 125 阅读 · 0 评论