php
文章平均质量分 90
hzzyu
熟悉php,go,python爬虫,热爱编程,尊重程序
展开
-
一台Linux服务器最多能支撑多少个TCP连接?
困惑很多人的并发问题在网络开发中,我发现有很多同学对一个基础问题始终是没有彻底搞明白。那就是一台服务器最大究竟能支持多少个网络连接?我想我有必要单独发一篇文章来好好说一下这个问题。很多同学看到这个问题的第一反应是65535。原因是:“听说端口号最多有65535个,那长连接就最多保持65535个了”。是这样的吗?还有的人说:“应该受TCP连接里四元组的空间大小限制,算起来是200多万亿个!”如果你对这个问题也是理解的不够彻底,那么今天讲个故事讲给你听!一次关于服务器端并发的聊天".原创 2021-04-24 20:24:50 · 3669 阅读 · 0 评论 -
PHP 中 static 和 self 的区别
使用self::或者__CLASS__对当前类的静态引用,取决于定义当前方法所在的类:使用static::不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。静态绑定是PHP 5.3.0,增加的一个功能 用于在继承范围内引用静态调用的类简单通俗的来说,self就是写在哪个类里面, 实际调用的就是这...原创 2019-04-01 11:52:02 · 92 阅读 · 0 评论 -
PHP实现同服务器多个二级域名共享 SESSION 数据
现在很多分类信息网站都会分出很多个二级域名出来,比如:sh.ganji.com(上海赶集网), su.ganji.com(苏州赶集网)等等,像这种拥有多个二级域名的网站,该如何实现同步共享session呢,这里不讨论在多个服务器上的问题,仅仅分享一下在同一个服务器上面的多个二级域名网站如何共享session。说这个问题之前,先来了解一下 PHP SESSION 的工作原理。在客户端(如浏览器)...原创 2019-04-04 11:45:37 · 522 阅读 · 0 评论 -
解决nginx负载均衡的session共享问题
nginx中的ip_hash技术能够将某个ip的请求定向到同一台后端,这样一来这个ip下的某个客户端和某个后端就能建立起稳固的session,ip_hash是在upstream配置中定义的 2 ip_hash是容易理解的,但是因为仅仅能用ip这个因子来分配后端,因此ip_hash是有缺陷的,不能在一些情况下使用:1.nginx不是最前端的服务器。 ip_hash要求ng...原创 2019-03-12 10:46:54 · 472 阅读 · 0 评论 -
php面向对象编程self和static的区别
tatic - PHP 5.3加进来的只得是当前这个类,有点像$this的意思,从堆内存中提取出来,访问的是当前实例化的那个类,那么 static 代表的就是那个类。<?phpclass A { public static function get_self() { return new self(); } public static function ...原创 2019-03-11 16:25:03 · 138 阅读 · 0 评论 -
编写自己的Composer包
简介:你或许使用过多个框架,或许自己开发过很多组件,多个类库,接口等。会不会因为切换框架而头疼,是不是还得修改你的代码,可能还得在某一框架里面重新包含这些文件进来。现在有两个工具可以帮助你解决这一问题,它们分别是Composer和PEAR.我们主要推荐Composer,并使用Composer开发基于psr系列规范化的组件,类库等。可以达到一次编程,随处可用的效果。当然,这是得注意一下PHP版本...转载 2019-03-08 17:18:01 · 667 阅读 · 0 评论 -
PHP常用的一些屌炸天的技巧(一)
大部分有两三年工作经验的PHPer,都必定积累了不少在日常开发中使用的小技巧。从前端,接口开发,团队编程规范,模块化和前辈们分享的个人经验中总结出一些小技巧。这些技能都能大大地提高我们日常开发的效率,提升我们的代码质量,更能让你省下了很多看看书,看看博客,找妹子聊聊天的时间。以下是我个人从工作经验中总结的一些编程小技巧,其中可能也会包括一些前辈们分享的经验,如有更好的实现方法,可...转载 2019-03-08 17:12:11 · 225 阅读 · 0 评论 -
数据库断线问题
MySQL长连接MySQL短连接每次请求操作数据库都需要建立与MySQL服务器建立TCP连接,这是需要时间开销的。TCP连接需要3次网络通信。这样就增加了一定的延时和额外的IO消耗。请求结束后会关闭MySQL连接,还会发生3/4次网络通信。close操作不会增加响应延时,原因是close后是由操作系统自动进行通信的,应用程序感知不到长连接就可以避免每次请求都创建连接的开销,节省了时...转载 2019-03-08 17:08:23 · 464 阅读 · 0 评论 -
PHP curl 获取响应的状态码的方法
PHP curl可以从服务器端模拟一个http请求,例如抓取网页、模拟登陆等。根据选项设置,可以在curl_exec的返回结果中获取到响应头和body,但这没有响应的状态吗。想要获取状态码,需要在执行curl_exec后再通过curl_getinfo来获取。例如:$ch = curl_init (); curl_setopt($ch, CURLOPT_URL, 'http://www.g...原创 2019-02-28 20:47:38 · 9631 阅读 · 0 评论 -
PHP DB 数据库连接类
声明:近期观看了一节 PHP 消息队列视频,对于讲师WiconWang提供的代码,在此分享一下,希望能对爱学习的小伙伴有所帮助… <?php// 数据库连接类class DB{ //私有的属性 private static $dbcon=false; private $host; private $port; private $user; privat...原创 2019-02-14 16:51:11 · 135 阅读 · 0 评论 -
php反射机制学习
PHP 5 具有完整的反射 API,可以通过反射机制来获取类,接口,函数的详细信息。例如可以通过反射api的成员属性,成员方法,命名空间的名称,检测某个类是否为抽象类等操作。(欢迎指点)一般用途是在框架中配合自动加载类来完成 对类的实例化操作。 1.建立一个Person类的反射类,然后实例化此类。<?phpclass Person { /** ...原创 2019-04-01 17:20:02 · 136 阅读 · 0 评论 -
php 输出excel方法
public function getExcelFormat($filename,$members) { header ( "Content-type: application/octet-stream" ); //用来告诉浏览器,文件是可以当做附件被下载,下载后的文件名称为$file_name该变量的值。 Header ( "Conte...原创 2019-03-29 13:26:16 · 1424 阅读 · 0 评论 -
linux下web目录权限设置
1、nginx和php-fpm运行用户为www2、我们假设web目录所属着为ftpuser3、将web目录的用户和用户组设置为ftpuser和www,如下命令:chown -R ftpuser:www /usr/local/nginx/html4、设置网站目录权限为750,750是ftpuser用户对目录拥有读写执行的权限,这样ftpuser用户可以在任何目录下创建文件,用户组有有读执...转载 2019-04-03 13:25:38 · 587 阅读 · 0 评论 -
php对于redis的上亿用户登录统计
可以用于上限超大的连续性的数字编号统计,在不牺牲查询速度的前提下,缩小存储空间。如用户id的统计,统计当天内访问网站的用。节约了32倍的空间。上亿用户登录统计存储模型设计因为有上亿的用户量,所以可以将每个用户按照每个位来存入,每一天都有一个bitmap,每个bitmap的每一位对应着一个用户的当天的登录状态值数据id设计每天的bitmap的key设置成当天日期,比如lo...原创 2019-09-30 14:50:46 · 324 阅读 · 0 评论 -
令牌桶限流思路分享(PHP+Redis实现机制)
一 、场景描述在开发接口服务器的过程中,为了防止客户端对于接口的滥用,保护服务器的资源, 通常来说我们会对于服务器上的各种接口进行调用次数的限制。比如对于某个 用户,他在一个时间段(interval)内,比如 1 分钟,调用服务器接口的次数不能够 大于一个上限(limit),比如说 100 次。如果用户调用接口的次数超过上限的话,就直接拒绝用户的请求,返回错误信息。服务接口的流量控制策略:分...原创 2019-08-20 14:00:17 · 750 阅读 · 0 评论 -
yum 安装php扩展
搜索对应php版本的扩展yum list |grep php72w*安装具体扩展yum -y install php72-php-pecl-redis4.x86_64原创 2019-07-15 09:25:38 · 1211 阅读 · 0 评论 -
PHP7与php5
php在2015年12月03日发布了7.0正式版,带来了许多新的特性,以下是不完全列表: 性能提升:PHP7比PHP5.6性能提升了两倍。 Improved performance: PHP 7 is up to twice as fast as PHP 5.6 全面一致的64位支持。 Consistent 64-bit support 以前的许多致命错误,现在改成抛出异...原创 2019-07-04 23:07:36 · 138 阅读 · 0 评论 -
Swoole4 协程与 Go 协程有哪些区别
Swoole4与Go协程在设计上是完全一致的,均是stackful的,每个协程拥有独立的运行栈。协程调度器使用汇编代码,切换协程上下文。Swoole4与Go协程在实现细节上存在一些差异。主要是以下几方面:多线程Swoole4的协程调度器是单线程的,因此不存在数据同步问题,同一时间只会有一个协程在运行 Go协程调度器是多线程的,同一时间可能会有多个协程同时执行因此在Swoole4协程...原创 2019-06-04 18:25:41 · 936 阅读 · 0 评论 -
综合解释swoole的协程原理
这是我看来网上很多人的文章,综合理解的结果,如果有错的地方,欢迎留言指出,希望大家一起前进,不惜勿喷协程的执行顺序先来看看基础的例子:go(function () { echo "hello go1 \n";});echo "hello main \n";go(function () { echo "hello go2 \n";});go() 是 \...原创 2019-06-04 18:20:23 · 4289 阅读 · 2 评论 -
关于网站根目录权限
网站根目录权限遵循:文件644,文件夹755,权限用户和用户组www如出现文件权限问题时,请执行下面3条命令:chown -R www.www /data/wwwroot/find /data/wwwroot/ -type d -exec chmod 755 {} \;find /data/wwwroot/ -type f -exec chmod 644 {} \;...原创 2019-04-18 16:06:23 · 1810 阅读 · 0 评论 -
详解composer的自动加载机制
composer是一个用PHP开发的用来管理项目依赖的工具,当你在项目中声明了依赖关系后,composer可以自动帮你下载和安装这些依赖库,并实现自动加载代码。安装composercomposer的安装非常的容易1.下载安装脚本,这里把安装脚本保存为composer-setup.php[root@localhost composer]# php -r "copy('h...原创 2019-04-09 15:43:45 · 238 阅读 · 0 评论 -
PHP设计模式——代理模式
代理模式为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 UML类图: 角色介绍: 抽象主题角色(IGiveGift):定义了Follower和Proxy公用接口,这样就在任何使用Follower的地方都可以使用P...转载 2019-01-15 18:04:58 · 96 阅读 · 0 评论 -
PHP设计模式 迭代器模式
迭代器模式,在不需要了解内部实现的前提下,遍历一个聚合对象的内部元素。,迭代器模式可以隐藏遍历元素所需要的操作。 <?phpnamespace Baobab;class AllHacl implements \iterator{ protected $ids;protected $index;//当前位置 function __construct()...转载 2019-01-15 17:49:39 · 62 阅读 · 0 评论 -
PHP 装饰器模式
装饰器模式:如果已有对象的部分内容或功能性发生改变,但是不需要修改原始对象的结构或不使用继承,动态的扩展一个对象的功能,则应该使用装饰器模式。简单点说:就是我们不应该去修改已有的类,而是通过创建另外一个装饰器类,通过这个装饰器类去动态的扩展其需要修改的内容,这样做的好处就是————1、我们可以保证类的层次不会因过多而发生混乱。2、当我们需求的修改很小时,不用改变原有的数据结构。 &...转载 2019-01-15 17:30:15 · 246 阅读 · 0 评论 -
ThinkPHP 5.1 Swoole 快速上手指南
本篇内容主要讲述了最新的think-swoole扩展的使用。安装Swoole 安装think-swoole 启动Swoole HTTP服务 配置文件 守护进程模式 基本操作 Cookie和Session 文件监控 事件回调 Nginx+Swoole部署 静态资源访问 HTTPS和HTTP2支持 其它注意事项 快速启动Swoole Server ...转载 2018-10-18 13:24:01 · 5679 阅读 · 0 评论 -
php之遍历文件夹目录
<?php function dirList($dir){ $arr = scandir($dir); foreach ($arr as $v) { if($v != "." && $v != ".."){ $path = $dir."/".$v; if(is_dir($path)){ dirList($path); }else{ ...原创 2018-09-07 16:40:08 · 207 阅读 · 0 评论 -
python多线程为什么不能利用多核cpu
GIL 与 Python 线程的纠葛GIL 是什么东西?它对我们的 python 程序会产生什么样的影响?我们先来看一个问题。运行下面这段 python 程序,CPU 占用率是多少?# 请勿在工作中模仿,危险:)def dead_loop(): while True: passdead_loop()答案是什么呢,占用 100%...原创 2018-09-12 14:07:49 · 1113 阅读 · 0 评论 -
PHP PSR 代码规范基本介绍
PSR 是 PHP Standard Recommendation 的简写,即PHP推荐标准。目前通过的规范有 PSR-0(Autoloading Standard)、PSR-1(Basic Coding Standard)、PSR-2(Coding Style Guide)、PSR-3(Logger Interface)、PSR-4(Improved Autoloa...原创 2018-09-12 10:55:46 · 148 阅读 · 0 评论 -
php 实时输出内容到浏览器
php 实时输出内容到浏览器当你在处理一个过程需要耗时很长,但你又需要适时的知道程序当前的处理状况的时候,该怎么办呢?下面就分享一下如何使用php及时的输出当前结果到浏览器而不刷新整个页面的效果吧。应用场景:如安装数据库,实时显示每一步信息,如1.数据库创建成功...2.user表创建成功...3.用户user1插入成功...PHP 里开启实时输出方法是 ob_implicit_flu...原创 2018-09-03 18:06:49 · 8301 阅读 · 0 评论 -
PHP创建定时任务 sh+php和tp5+crontab两种方式
方式一:sh(最简洁暴力):#!/bin/bash // 1.执行thinkphp5下到index方法/usr/bin/php /home/wwwroot/default/tp5/public/index.php /index/index/index // 2.执行thinkphp5下的test方法/usr/bin/php /home/wwwroot/default/...原创 2018-09-03 17:14:17 · 980 阅读 · 0 评论 -
php之 foreach 使用 引用& $value . 使用 unset($value)
1.知识点: 2. 例子 2.1 例子1 . $arr 引用循环, 赋值变量是 &$v ,第一个循环使用后 ,没有 使用unset($v) , $arr2 正常循环, 赋值变量是 $v , 第二个循环 也 使用 $v 这个变量<?php$arr = array("a", "b", "c");$arr2 = array("d", "e"原创 2018-09-08 17:46:31 · 4579 阅读 · 0 评论 -
php从url中获取文件名和后缀等信息
$url = 'http://www.baidu.com/a/b/c/index.php?id=10';$arr = parse_url($url);var_dump($arr);$arr2 = pathinfo($arr['path']);var_dump($arr2);array(4) { ["scheme"]=> string(4) "http" ["ho...原创 2018-09-04 17:39:17 · 9805 阅读 · 0 评论 -
php之日常小技巧一 &&符号
需求: 当($arr['a'])不为空时,$result['a'] = $arr['a'];当$arr['a']为空时,$result['a'] 不赋值。思路一: if(!empty($arr['a'])){ $result['a'] = $arr['a'] ; } 此写法最简单,但是当我的需求变为10个时,将会有10个if语句,代码显...原创 2018-08-03 18:37:14 · 398 阅读 · 0 评论 -
php 数据库链式操作--伪代码
<?php class Test { public function __construct() { echo "construct"; } public function where() { echo "where"; return $this; } ...原创 2018-10-18 13:28:07 · 767 阅读 · 0 评论 -
Coreseek安装-带中文分词的Sphinx
什么是CoreseekSphinx默认不支持中文索引及检索,基于Sphinx开发了Coreseek全文检索服务器,Coreseek应该是现在用的最多的Sphinx中文全文检索,它提供了为Sphinx设计的中文分词包LibMMSeg包含mmseg中文分词。安装1.先安装环境yum install make gcc gcc++ gcc-c++ libtool autoconf automake...转载 2018-10-09 13:59:04 · 265 阅读 · 0 评论 -
php实现原型模式
设计模式-使用php实现原型模式【概要】创建型模式用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象【结构图】【主要角色】抽象原型(Prototype)角色:声明一个克隆自身的接口具体原型(Concrete Prototype)角色:实现一个克隆自身的操作【优缺点】Prototype模式优点:1、可以在运行时刻增加和删除产品2、可以改变值以指定新对象3、可以改...转载 2019-01-14 17:22:39 · 79 阅读 · 0 评论 -
PHP单例模式详细介绍
单例模式的概念单例模式是指整个应用中某个类只有一个对象实例的设计模式。具体来说,作为对象的创建方式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局的提供这个实例。它不会创建实例副本,而是会向单例类内部存储的实例返回一个引用。单例模式的特点单例模式的主要特点是“三私一公”:需要一个保存类的唯一实例的私有静态成员变量构造函数必须声明为私有的,防止外部程序new一个对象...转载 2019-01-07 16:48:15 · 80 阅读 · 0 评论 -
PHP设计模式之——工厂模式
在开发大型系统过程中,往往会出现这样一种情况:我有一部分基础数据,是类classA是从数据库A读取出来的,其他很多的功能都是基于这个基础数据来操作的。现在呢,我想把数据从数据库A变成从另外的数据源去获取,这时候,要修改起来就比较麻烦,要修改其他很多类的代码。这种设计显然是不够灵活的,换句话说,就是紧耦合的,系统中某个部分的函数或类严重依赖于系统的其他部分中的函数或类的行为和结构。工厂模式,...转载 2019-01-07 16:46:41 · 122 阅读 · 0 评论 -
PHP设计模式之:策略模式
策略模式:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化;适用场景:1、多个类只区别在于表现行为不同,可以使用strategy(策略)模式,在操作时动态选择具体要执行的行为(算法、策略);2、需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其它方式来实现;3、对客户隐藏具体策略(算法)的实现...转载 2019-01-07 16:41:40 · 82 阅读 · 0 评论 -
php设计模式之观察者(代码解码)
【观察者模式中主要角色】1.抽象主题(Subject)角色:主题角色将所有对观察者对象的引用保存在一个集合中,每个主题可以有任意多个观察者。 抽象主题提供了增加和删除观察者对象的接口。2.抽象观察者(Observer)角色:为所有的具体观察者定义一个接口,在观察的主题发生改变时更新自己。3.具体主题(ConcreteSubject)角色:存储相关状态到具体观察者对象,当具体主题的内部状态改...原创 2019-01-11 15:09:31 · 95 阅读 · 0 评论