- 博客(172)
- 资源 (4)
- 收藏
- 关注
转载 PHP并发IO编程之路
并发IO问题一直是服务器端编程中的技术难题,从最早的同步阻塞直接Fork进程,到Worker进程池/线程池,到现在的异步IO、协程。PHP程序员因为有强大的LAMP框架,对这类底层方面的知识知之甚少,本文目的就是详细介绍PHP进行并发IO编程的各种尝试,最后再介绍Swoole的使用,深入浅出全面解析并发IO问题。多进程/多线程同步阻塞最早的服务器端程序都是通过多进程、多线程来解决并
2017-06-08 11:58:03 512
转载 PHP底层的运行机制与原理解析
PHP说简单,但是要精通也不是一件简单的事。我们除了会使用之外,还得知道它底层的工作原理。PHP是一种适用于web开发的动态语言。具体点说,就是一个用C语言实现包含大量组件的软件框架。更狭义点看,可以把它认为是一个强大的UI框架。了解PHP底层实现的目的是什么?动态语言要像用好首先得了解它,内存管理、框架模型值得我们借鉴,通过扩展开发实现更多更强大的功能,优化我们程序的性能。
2017-06-08 11:56:41 218
转载 零基础写PHP扩展
很多PHPer天天写表单,不知如何提升。如果你已经熟悉了数据集和服务器端的优化,不妨试试通过PHP扩展向系统层进军。当原有的PHP代码实现出现性能瓶颈,可以考虑通过PHP扩展实现;纯PHP代码无法实现的功能,可以考虑通过PHP扩展调用其他相关库实现。既能提升业务能力,又能帮助大家逐渐通过扩展了解PHP 源代码层的运作机制。扩展入门较难,这里特别推荐淘宝大牛信海龙老师的入门课程,手把
2017-06-08 11:55:42 321
转载 PHP单元测试与数据库测试
我总感觉 PHP 的开发者们并没有对 PHP 的质量有所追求,可能是因为 PHP 的机制问题吧,让大部分的开发者总以为浏览器访问就没有问题,所以很多时候,做 PHP 开发的,就没有单元测试的这些概念了。能不能有点追求?我个人也是 PHP,但同时我也比较讨厌那些完事就算了的开发者,作为一个开发者,或者说是一个产品的经手人,就应该用心地去做好每个细节,一次比一次要更好。但是做单元测试,
2017-06-08 11:54:26 1969
转载 CentOS 下,PHP安装拓展
CentOS 下,PHP有多种方式来安装拓展, 主要有 包管理式的 yum 安装、pecl 安装, 以及源码编译安装。包管理式的安装卸载尤为方便,而源码编译式的安装则方便参数调优。一般搭建本机开发环境推荐包管理式的安装,节约时间。而线上部署环境则推荐编译安装, 方便调优。本文以 MongoDB 扩展`安装举例。工具PHP版本 : 7.0.17Ngin
2017-06-08 11:53:25 436
转载 关于PHP的错误机制总结
PHP 的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课。作者:佚名来源:程序源|2017-04-26 15:30 移动端 收藏 分享PHP 的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课。特别说明:文章的PHP版本使用5.5.32PHP的错误级别
2017-06-08 11:51:09 228
转载 PHP哈希表碰撞攻击原理
最近哈希表碰撞攻击(Hashtable collisions as DOS attack)的话题不断被提起,各种语言纷纷中招。本文结合PHP内核源码,聊一聊这种攻击的原理及实现。哈希表碰撞攻击的基本原理哈希表是一种查找效率极高的数据结构,很多语言都在内部实现了哈希表。PHP中的哈希表是一种极为重要的数据结构,不但用于表示Array数据类型,还在Zend虚拟机内部用于存储上下文环境信
2017-06-08 11:49:32 365
转载 云服务器LNMP环境搭建
原文地址:http://blog.csdn.net/zjiang1994/article/details/72884151写在前面关于目的这是一篇介绍如何在云服务器上搭建LNMP环境的指北南内容基于我近一段时间来的学习和实践,所以有些内容会和网上其他文章有重复,所以说本文目的在于通过前辈们的知识,并且尽量清晰的总结出一套行之有效的方法。关于L
2017-06-07 14:27:08 578
转载 自定义 文件上传按钮样式
摘要: 本文讲的是html自定义文件上传控件样式input:file方法总结, 例1 一千个浏览器就有一千个默认控件样式 如何自定义文件上传控件 <input type=’file’> 样式? 原理:把浏览器提供的默认控件样式隐藏,给控件外框添加自定义样式。兼容性:兼容所有浏览器。 HTM例1 一千个浏览器就有一千个默认控件样式
2017-05-09 18:06:54 4971
转载 纯CSS控制背景图片100%自适应填充布局
原文:http://www.uedsc.com/css-background-size-100.html解决:[html] view plain copy html,body{height: 100%;width: 100%;margin:0;padding:0;} body{ background:url(bg-logi
2017-05-04 14:21:17 7247
转载 关于PHP的错误机制总结
PHP 的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课。特别说明:文章的PHP版本使用5.5.32PHP的错误级别首先需要了解php有哪些错误。截至到php5.5,一共有16个错误级别注意:尝试下面的代码的时候请确保打开error_log:error_reporting(E_ALL); ini_set('display_error
2017-04-28 17:34:42 309
转载 Mysql 并发引起的死锁问题
平台的某个数据库上面有近千个连接,每个连接对应一个爬虫,爬虫将爬来的数据放到cdb里供后期分析查询使用。前段时间经常出现cdb查询缓慢,cpu占有率高的现象。通过show processlist后发现,大量的连接卡在了执行INSERT ... ON DUPLICATE KEY UPDATE这样的语句上面。难道并发执行INSERT ... ON DUPLICATE KEY UPDATE会导致cp
2017-04-27 18:20:59 1833
转载 大数据量下MySQL插入方法的性能比较
不管是日常业务数据处理中,还是数据库的导入导出,都可能遇到需要处理大量数据的插入。插入的方式和数据库引擎都会对插入速度造成影响,这篇文章旨在从理论和实践上对各种方法进行分析和比较,方便以后应用中插入方法的选择。插入分析MySQL中插入一个记录需要的时间由下列因素组成,其中的数字表示大约比例:连接:(3)发送查询给服务器:(2)分析查询:(2)插入记录:(1x记录大小)插入索
2017-04-27 18:16:55 419
转载 静态内容实现缓存的七种不同方法
在商业世界中,人们常说“现金为王”。然而,在技术世界里,我们却说“缓存为王”。 从浏览器到应用前端、应用后端、数据库,每一层都可以通过缓存来显著地提高系统的扩展能力,改善系统的响应能力,同时减少系统的负担。互联网平台上的内容可以分为静态和动态两种。静态内容指那些不经常改变的文本和图像。动态内容是指随着时间的推移,不断变化的内容。本文主要讨论静态内容实现缓存的七种不同方法。1. 利用
2017-04-27 18:13:04 6473
转载 Mysql 优化
说起MySQL的查询优化,相信大家收藏了一堆奇淫技巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑
2017-04-27 18:09:47 260
转载 MySQL实现两主多从架构
1.实现目标 目标清单: 1)Master(192.168.31.230)为正常运行环境下的主库,为两个Slave(192.168.31.231和192.168.31.232)提供“主-从”复制功能; 2)Master_Backup(192.168.31.233)是Master的备份库,只要Master是正常的,它不对外提供服务。它与Master之间属于"主-主"复制关系,即自己既是主机,又是对方
2017-04-20 10:00:18 11677 2
转载 在linux下安装或者卸载nginx
如果迩是在ubuntun下安装nginx、建议先卸载掉自带的版本、太旧了、0.7的、uWsgi都不支持、还要打补丁、太麻烦了、如果是默认安装的话、一定是使用了apt-get的方式来安装的、那么莪们就使用apt-get的方式来卸载吧、sudo apt-get --purge remove nginx完成后再试下which nginx存在不、不存在就是已经成功卸了还是从源码
2017-04-19 15:13:47 7610
原创 CodeIgniter在nginx下404 not found
server { listen 80; server_name test.platform; charset utf8; root /data/www/platform/trunk; location / { index index.html index.php;
2017-04-19 11:22:50 1749
转载 CentOS 6.6编译安装Nginx1.6.2+MySQL5.6.21+PHP5.6.3
vi /etc/sysconfig/iptables #编辑防火墙配置文件# Firewall configuration written by system-config-firewall# Manual customization of this file is not recommended.*filter:INPUT ACCEPT [0:0]:FOR
2017-04-19 11:02:52 471
转载 编译安装libevent,memcache,以及php的memcached扩展
一 安装libevent1.去官网http://libevent.org/ 下载最新源码,我用的是libevent-2.0.20-stable.tar.gz 2.解压到/usr/src目录 ,执行命令:sudo tar -zxvf libevent-2.0.20-stable.tar.gz -C /usr/src3.进入解压以后的目录,用sudo方式执行命令:sudo ./
2017-04-12 14:44:11 1034
转载 安装php的libevent
libevent扩展安装libevent-2.0.16-stable.tar http://libevent.org/[plain] view plain copycd libevent-2.0.16-stable ./configure make make install 下载php-libev
2017-04-12 14:41:32 1355
转载 linux下的nginx/mysql/php启动、停止、重启命令操作
/usr/local/nginx/sbin/nginx/etc/init.d/mysql start/usr/local/php/sbin/php-fpm start #nginx命令 start: /usr/local/nginx/sbin/nginx stop: /usr/local/nginx/sbin/n
2017-04-10 18:13:56 221
转载 nginx-rtmp-module搭建带推流验证的RTMP+HLS直播服务器
目前来说,我们可以用到的rtmp服务器有以下几种1.开源类型:red5,crtmpserver,erlyvideo,haXevideo,FluorineFX,simple rtmp server(SRS),还有nginx-rtmp,Cumulus Server,Mistserver2.商业软件:wowza media server,slyseal,fms(ams),helix,Evostr
2017-04-10 14:14:28 9810
转载 使用nginx与nginx-rtmp-module搭建流媒体服务器
本次搭建流媒体使用的环境是centos 7.0+nginx;让我们一起开始奇妙的流媒体之旅吧!1、下载nginx-rtmp-module:nginx-rtmp-module的官方github地址:https://github.com/arut/nginx-rtmp-module使用命令:[php] view pla
2017-04-07 10:12:38 322
转载 关于直播,所有的技术细节都在这里了
网络视频直播存在已有很长一段时间,随着移动上下行带宽提升及资费的下调,视频直播被赋予了更多娱乐和社交的属性,人们享受随时随地进行直播和观看,直播的打开时间和延迟变成了影响产品功能发展重要指标。 注:本文是以原文为主体,加上我自己的一些总结和补充写的那么,问题来了: 如何实现低延迟、秒开的直播?先来看看视频直播的5个关键的流程: 录制->编码->网络传输-
2017-04-06 13:06:22 1297
原创 自己对设计模式的理解:工厂模式和单例模式
一、工厂模式:个人总结class Factory{static function createObject($par){if ($par == 1) {$test1 = new Object1();} elseif ($par == 2) {$test2 = new Object2();} else {$test3 = new Object3();}
2017-03-31 17:08:40 262
原创 composer的安装
1.必须安装PHP MySQL2.下载最新的composer.phar3.建立文件夹 composer4.命令执行安装php composer.phar5.php composer.phar -V 看到版本6.建立一个composer.bat文件,里面写入@php "%~dp0composer.phar" %*7.composer -v ok中国镜像
2017-03-31 17:02:55 170
转载 Elasticsearch安装IK分词器
安装方式大概分为两种:自行编译;使用elasticsearch-rtf版,利用别人编译好的文件进行安装;环境说明:我下载的es版本是:elasticsearch-1.7.4.tar.gz,这里我是用的ik版本是elasticsearch-rtf-1.0.0.zip解压后得到的elasticsearch-analysis-ik-1.2.6.jar文件。方式一:自行编译
2017-03-31 16:57:41 594
转载 PHP汉字转换拼音的函数代码
header('Content-Type: text/html; charset=UTF-8');/** * 拼音工具类 * $isfirst true代表只要拼音的大写字母,否则就是全拼 */class PinyinUtil{ public static function convert($s, $isfirst = false) { static $
2017-03-31 16:54:27 50692
转载 使用 ElasticSearch Aggregations 进行统计分析
ElasticSearch 的特点随处可见:基于 Lucene 的分布式搜索引擎,友好的 RESTful API……大部分文章都围绕 ELK Stack 和全文搜索展开,本文试图用一个小案例来展示 ElasticSearch Aggregations 在统计分析的强大之处。表单长这样需求:对回收的问卷进行统计,统计方式可能有:看每周/天/小时回收量(可以做成
2017-03-31 16:50:19 2832
转载 rpc介绍,和PHP常用的rpc框架
什么是rpc框架先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call)那什么是远程调用?通常我们调用一个PHP中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它
2017-03-31 16:48:01 9488
原创 常见通信协议区别——tcp、udp、rpc、http、socket
TCP/IPTCP/IP协议是一个协议簇。里面包括很多协议的。UDP只是其中的一个。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了。tcp和udptcp和udp都是传输协议,主要区别是tcp协议连接需要3次握手,断开需要四次握手,是通过流来传输的,就是确定连接后,一直发送信息,传完后断开。udp不需要进行连接,直接把信息
2017-03-31 16:45:01 1896
原创 sql server 实现分页方法
var iPage = getPage(); // 获取当前页var iPageSize = 20;// 每页的记录数量var sql = "SELECT TOP "+ iPageSize +" ID,User FROM [Users] WHERE age > 18 AND "+ " ID NOT IN ( SELECT TOP "+ iPageSize*(iPage -1) +" I
2017-03-31 09:39:09 277
转载 jsonp 跨域通信的实现
jsonp 跨域通信的实现 在js中,让 s1.example.com (s1) 可以于 s2.example.com (s2) 通信 js跨域发送消息是没有权限的,也没有办法从其他域名获取返回的数据 如: (在 s1 下) $.ajax({ url:'http://s2.example.com/get
2017-03-31 09:35:25 321
原创 SQL语句收集
每个用户在 从表(t) 只获取一条 最新的 记录。适用于一对多,但每个主表记录只查询一条从表记录的情况。addtime -- 添加时间userid -- 外键select top 10 title from t where addtime in (select max(addtime) from t group by userid)参考网址:http://zhidao.bai
2017-03-30 16:08:38 168
转载 .htaccess 的正则规则
为了方便 htaccess 编写正则,这里整理了一下 htaccess 的正则规则。# —— 位于行首时表示注释。[F] —— Forbidden(禁止): 命令服务器返回 403 Forbidden错误给用户浏览器[L] —— Last rule(最后一条规则): 告诉服务器在本条规则执行完后停止重写URL[N] —— Next(下一条规则): 告诉服务器继续重写,指导所
2017-03-09 17:21:48 472
转载 PHP使用CURL详解
PHP使用CURL详解CURL是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,我们使用它来发送HTTP请求。它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS。CURL可以根据URL前缀是“HTTP” 还是“HTTPS”自动选择是否加密发送内容。使用CURL发送请求的基本流程使用CURL的PHP扩展
2017-03-06 17:13:24 223
转载 MySQL的存储函数(自定义函数)的定义和使用方法
什么是存储函数: 封装一段sql代码,完成一种特定的功能,返回结果。存储函数的语法: create function 函数([函数参数[,….]]) Returns 返回类型 Begin If( Return (返回的数据) Else Return (返回的数据) end if; end;例如: cre
2017-02-13 12:42:41 3532
原创 ci 表单验证
//载入验证类$this->load->library('form_validation');//验证是否有输入用户名$this->form_validation->set_rules('username', 'username', 'required');//验证是否有输入密码$this->form_validation->set_rules('passwor
2017-02-07 14:02:03 700
原创 正则验证数字
验证数字:^[0-9]*$验证n位的数字:^\d{n}$验证至少n位数字:^\d{n,}$验证m-n位的数字:^\d{m,n}$验证零和非零开头的数字:^(0|[1-9][0-9]*)$验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$验证非零的正整数:^\
2017-02-04 16:30:54 238
zlib-1.2.8.tar.gz
2017-04-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人