
PHP
文章平均质量分 94
CC_小硕
这个作者很懒,什么都没留下…
展开
-
php 两个经纬度 位置之间的 距离
/* * 1.纬度1,经度1,纬度2,经度2 * 2.返回结果是单位是KM。 * 3.保留一位小数 */function getDistance($lat1,$lng1,$lat2,$lng2){ //将角度转为狐度 $radLat1 = deg2rad($lat1);//deg2rad()函数将角度转换为弧度 $radLat2 = deg2rad($lat2); $rad...转载 2019-07-10 16:42:58 · 417 阅读 · 0 评论 -
深入理解PHP原理之函数(Introspecting PHP Function)
作者: Laruence( )本文地址: http://www.laruence.com/2008/08/12/164.html转载请注明出处在PHP中,函数分为俩种,一种是zend_internal_function, 这种函数是由扩展或者Zend/PHP内核提供的,用’C/C++’编写的,可以直接执行的函数。另外一种是zend_user_function,转载 2017-11-29 17:37:05 · 184 阅读 · 0 评论 -
深入理解PHP原理之变量分离/引用(Variables Separation)
作者: Laruence( )本文地址: http://www.laruence.com/2008/09/19/520.html转载请注明出处在前面的文章中我已经介绍了PHP的变量的内部表示(深入理解PHP原理之变量(Variables inside PHP)),以及PHP中作用域的实现机制(深入理解PHP原理之变量作用域(Scope inside PHP))。这节转载 2017-11-29 17:02:26 · 216 阅读 · 0 评论 -
深入理解PHP内存管理之一个低概率Core的分析
作者: Laruence( )本文地址: http://www.laruence.com/2011/01/27/1854.html转载请注明出处一个同事forward过来一个, 公司某产品线遇到的一个低概率, 但长时间出现了几次的Core的bt信息, 找我帮忙分析下原因.bt栈如下(路径信息以*代替):#0 0x00000000004a75e5 in _zen转载 2017-11-29 17:00:08 · 524 阅读 · 0 评论 -
深入理解PHP内存管理之谁动了我的内存
作者: Laruence( )本文地址: http://www.laruence.com/2011/03/04/1894.html转载请注明出处首先让我们看一个问题: 如下代码的输出,var_dump(memory_get_usage());$a = "laruence";var_dump(memory_get_usage());unset($a);var_dump(m转载 2017-11-29 16:13:59 · 223 阅读 · 0 评论 -
curl_init()和curl_multi_init()多线程的速度比较
php中curl_init()的作用很大,尤其是在抓取网页内容或文件信息的时候,例如之前文章curl获得header检测GZip压缩的源代码就介绍到curl_init()的强大。curl_init()处理事物是单线程模式,如果需要对事务处理走多线程模式,那么php里提供了一个函数curl_multi_init()给我们,这就是多线程模式处理事务的函数。curl_init()与cur转载 2017-11-17 11:59:08 · 7271 阅读 · 0 评论 -
php curl_multi批量发送http请求
一、使用curl_multi批量发送http请求引子:在Android4.0开发中,发送Http请求已经不允许在主进程中执行了,必须在线程中执行。原因在于Http接口响应时间有可能阻塞主进程事件监听(对于.Net开发,其实也是如此)。但是,由于PHP并没有多线程的概念,那么,如何高效率在PHP中执行多次http请求呢?答案是使用curl_multi_init,由此,我做了一个实验。转载 2017-11-17 11:51:30 · 1025 阅读 · 0 评论 -
使用multi curl进行http并发访问
curl是一款利用URL语法进行文件传输的工具,它支持多种协议,包括FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET等,我们既可以在命令行上使用它,也可以利用 libcurl进行相关编程。相信大部分同学都应该使用过libcurl的easy 接口,easy接口的使用非常的简单,curl_easy_init用来初始化一个easy curl对象,curl_easy_setop转载 2017-11-17 11:45:40 · 2160 阅读 · 0 评论 -
PHP curl请求错误汇总和解决方案
最近做了一个服务器监控,需要通过curl发出大量的http请求,这里列举了一下curl返回的常见错误码,方便下次排查问题:错误信息含义解决方案Illegal characters found in URLURL中包含"\r",“\n"特殊字符过滤这些特殊字符if (strpbrk(data->change.转载 2017-11-17 11:23:34 · 1724 阅读 · 0 评论 -
PHP使用curl multi要注意的问题:每次使用curl multi同时并发多少请求合适
PHP的curl multi可以使用多线程处理http请求,一定程度上可以提高请求接口的效率。但是,启用多线程也是会消耗资源的事情,那么每次curl multi同时并发多少个请求合适呢?接下来做了以下一个实验,在开始的时候,先说说实验的结论:实验结论1)首先要检查发起请求服务器的网络带宽是否正常,避免请求服务器出现带宽瓶颈。2)curl multi并发请求并发数有一个阈值,过高的并转载 2017-11-17 10:58:34 · 1835 阅读 · 0 评论 -
读懂 Workerman 框架和 GatewayWorker 框架
首先去 workerman 的官网查看相关的介绍,再次不在赘述。我们通过一个 workerman 官网的例子来简单讲述一下workerman 的工作过程。windows版本聊天室 点击下载workerman-chat-for-win此版本跟 linux 版本的不同在与其中 workerman 的核心框架,其使用的是 windows 的版本,具体 windows 版本和 li转载 2017-11-23 22:10:17 · 1673 阅读 · 0 评论 -
php生成签名及验证签名
<?php /** * 根据原文生成签名内容 * * @param string $data 原文内容 * * @return string * @author confu */ function sign($data) { $filePath = 'test.p12'; if转载 2017-12-14 17:29:06 · 2233 阅读 · 0 评论 -
PHP使用swoole来实现实时异步任务队列
看swoole的官方文档,真的很迷茫,文档里都是些零碎的点,这些点怎么串起来的,还得需要自己摸索。比如手册里将不同的进程分开来讲,但实际开发的过程中,使用却是一起使用的。比如任务队列。手册里的资料有一下几个地方 https://wiki.swoole.com/wiki/page/481.html https://wiki.swoole.com/wiki/page/134.html ht转载 2018-01-11 17:37:01 · 1891 阅读 · 0 评论 -
PHP 记录
PHP 修改 php.ini 配置 函数 ini_set(); PHP 防注入函数mysql_real_escape_string redis 数据类型 : 字符串、哈希、枚举、列表、有序列表 return mb_convert_encoding(mb_convert_encoding($content, "GBK", "UTF-8"), "UTF-8", "GBK"); 过滤表...原创 2019-01-03 17:41:33 · 193 阅读 · 0 评论 -
php 获取当前目录和当前文件夹
<?php/** * PHP获取路径或目录实现 *///魔术变量,获取当前文件的绝对路径echo "__FILE__: ========> ".__FILE__;echo PHP_EOL.PHP_EOL;//魔术变量,获取当前脚本的目录echo "__DIR__: ========> ".__DIR__;echo PHP_EOL.PHP_EOL;...转载 2018-09-14 18:11:56 · 7603 阅读 · 0 评论 -
php 一些记录
PHP_EOL 换行 php --ri 扩展名 查看 PHP 扩展信息fwrite(STDOUT,'请输入:'); //命令行输入 $str = trim(fgets(STDIN)); //输入的内容原创 2018-09-17 15:22:01 · 226 阅读 · 0 评论 -
遍历文件夹把文件夹内的所有文件 复制到新文件夹内
<?phpfunction read_all ($dir,$newDir){ if(!is_dir($dir)) return false; $handle = opendir($dir); if($handle){ while(($file = readdir($handle)) !== false) {...原创 2018-08-29 15:26:15 · 631 阅读 · 0 评论 -
php 利用debug_backtrace方法跟踪代码调用
在开发过程中,例如要修改别人开发的代码或调试出问题的代码,需要对代码流程一步步去跟踪,找到出问题的地方进行修改。如果有一个方法可以获取到某段代码是被哪个方法调用,并能一直回溯到最开始调用的地方(包括调用的文件,行数,参数等),这样就能很方便的定位到出问题的地方。php的debug_backtrace方法可以对代码调用进行跟踪,方便调试代码。 debug_backtrace 方法说明...转载 2018-08-21 13:59:04 · 304 阅读 · 0 评论 -
php 系统函数
返回输入数组中某个单一列的值 (二维数组求和) 。array_column($result, 'xxx') 返回数组中所有值的和。(一维数组求和)array_sum() 函数对数组中的所有值进行计数(值得出现次数)。array_count_values() // 创建新的 session idsession_create_id() // 毫秒级时...原创 2018-08-23 17:16:46 · 316 阅读 · 0 评论 -
PHP7 opcache缓存清理问题
背景OPcache通过opcode的缓存和优化,提供更快的PHP执行过程。业务在php7环境运营时,为了提升请求的性能,在PHP7环境中配置OPcache扩展。业务在更新代码后,访问业务系统时提示无法找到对应的文件或请求的内容还是更新前的旧内容,webserver重启以后,请求访问到的文件就都是最新的了,问题就貌似解决了。问题分析根据现象分析,代码更新后请求找不到新增的文件,尤其是还在请求已有文件...转载 2018-07-05 16:10:20 · 6255 阅读 · 0 评论 -
php一行代码获取本周一,本周日,上周一,上周日,本月一日,本月最后一日,上月一日,上月最后一日日期 转 (2013-11-11 10:55:38)
本周一echo date('Y-m-d',(time()-((date('w')==0?7:date('w'))-1)*24*3600)); //w为星期几的数字形式,这里0为周日本周日echo date('Y-m-d',(time()+(7-(date('w')==0?7:date('w')))*24*3600)); //同样使用w,以现在与周日相关天数算上周一echo date('Y-m-d'...转载 2018-05-16 11:28:21 · 247 阅读 · 0 评论 -
时间搓转换剩余时间 php
// 天数$day = floor($times/86400);// 小时$hour = floor(($times-86400 * $day)/3600);// 分钟$minute = floor(($times-86400 * $day-3600 * $hour)/60);return $day.'天'.$hour.'小时'.$minute.'分钟';...原创 2018-04-16 18:45:26 · 1993 阅读 · 1 评论 -
PHPExcel导出导入
//加载PHPExcel的类$this->load->library('PHPExcel/PHPExcel');$this->load->library('PHPExcel/PHPExcel/IOFactory.php');//创建PHPExcel实例$excel = new PHPExcel();$IOFactory = new IOFactory();$objPHPExcel原创 2017-10-16 11:50:26 · 385 阅读 · 0 评论 -
PHP解决抢购、秒杀、抢楼、抽奖等阻塞式高并发库存防控超量的思路方法
如今在电商行业里,秒杀抢购活动已经是商家常用促销手段。但是库存数量有限,而同时下单人数超过了库存量,就会导致商品超卖甚至库存变负数的问题。又比如:抢购火车票、论坛抢楼、抽奖乃至爆红微博评论等也会引发阻塞式高并发问题。如果不做任何措施可能在高瞬间造成服务器瘫痪,如何解决这个问题呢?这里提出个人认为比较可行的几个思路方法:方案一:使用消息队列来实现可以基于例如MemcacheQ转载 2017-10-23 15:56:07 · 228 阅读 · 0 评论 -
关于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 · 333 阅读 · 0 评论 -
编译安装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 · 1078 阅读 · 0 评论 -
rpc介绍,和PHP常用的rpc框架
什么是rpc框架先回答第一个问题:什么是RPC框架? 如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call)那什么是远程调用?通常我们调用一个PHP中的方法,比如这样一个函数方法: localAdd(10, 20),localAdd方法的具体实现要么是用户自己定义的,要么是php库函数中自带的,也就说在localAdd方法的代码实现在本地,它转载 2017-03-31 16:48:01 · 9535 阅读 · 0 评论 -
PHP curl_setop 函数用法
[导读] curl_setopt函数是php中一个重要的函数,它可以模仿用户的一些行为,如模仿用户登录,注册等等一些用户可操作的行为哦。bool curl_setopt (int ch, string option, mixed value)curl_setopt()函数将为一curl_setopt函数是php中一个重要的函数,它可以模仿用户的一些行为,如模仿用户登录,注册等等一些用户可操原创 2016-11-19 10:35:10 · 904 阅读 · 0 评论 -
PHP使用CURL详解
PHP使用CURL详解CURL是一个非常强大的开源库,支持很多协议,包括HTTP、FTP、TELNET等,我们使用它来发送HTTP请求。它给我 们带来的好处是可以通过灵活的选项设置不同的HTTP协议参数,并且支持HTTPS。CURL可以根据URL前缀是“HTTP” 还是“HTTPS”自动选择是否加密发送内容。使用CURL发送请求的基本流程使用CURL的PHP扩展转载 2017-03-06 17:13:24 · 252 阅读 · 0 评论 -
.htaccess 配置详解
.htaccess配置, .htaccess文件,如何创建.httaccess文件,.httacces文件的配置转载 2016-11-22 21:01:06 · 1042 阅读 · 0 评论 -
POST和GET 请求 (XML)
/** * HTTP请求Service * */class HttpClientService{ public function doPost($url, $params) { $this->doPostXML($url, $params); } public function doPostXML($url, $xml) {原创 2017-01-10 09:57:23 · 368 阅读 · 0 评论 -
PHP 模板 smarty 逻辑运算符号
php模板 smarty 逻辑运算符总结原创 2016-11-30 10:33:30 · 5102 阅读 · 0 评论 -
PHP 代码规范简洁之道
1. 统一的编码规范编码规范往简单说其实就是三个方面:换行空格变量命名放在 PHP 里面,还有一些附加的地方,比如关键字大小写,语法糖的使用(array() 与 [] 等)的问题。之前整理过 PSR 的标准,也找过 php-cs-fixer 这样的工具。这些都是规范代码的重要手段。有统一的标准,配合上工具的检查,形成统一的编码约束不是什么难题。没有规范,转载 2017-01-03 10:17:35 · 573 阅读 · 0 评论 -
PHP哈希表碰撞攻击原理
最近哈希表碰撞攻击(Hashtable collisions as DOS attack)的话题不断被提起,各种语言纷纷中招。本文结合PHP内核源码,聊一聊这种攻击的原理及实现。哈希表碰撞攻击的基本原理哈希表是一种查找效率极高的数据结构,很多语言都在内部实现了哈希表。PHP中的哈希表是一种极为重要的数据结构,不但用于表示Array数据类型,还在Zend虚拟机内部用于存储上下文环境信转载 2017-06-08 11:49:32 · 409 阅读 · 0 评论 -
关于PHP的错误机制总结
PHP 的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课。作者:佚名来源:程序源|2017-04-26 15:30 移动端 收藏 分享PHP 的错误机制也是非常复杂的,做了几年php,也没有仔细总结过,现在就补上这一课。特别说明:文章的PHP版本使用5.5.32PHP的错误级别转载 2017-06-08 11:51:09 · 250 阅读 · 0 评论 -
PHP高效率写法(详解原因)
1.尽量静态化: 如果一个方法能被静态,那就声明它为静态的,速度可提高1/4,甚至我测试的时候,这个提高了近三倍。 当然了,这个测试方法需要在十万级以上次执行,效果才明显。 其实静态方法和非静态方法的效率主要区别在内存:静态方法在程序开始时生成内存,实例方法在程序运行中生成内存,所以静态方法可以直接调用,实例方法要先成生实例,通过实例调用方法,静态速度很快,但是多了会占内存转载 2017-08-08 14:26:57 · 430 阅读 · 0 评论 -
php读取本地文件常用函数
下面我们给出了一个直接打开本地文件的代码demo,必要的地方我们都已经加上了注释.直接打开一个本地文件的实例代码: //假若我们本地的文件是一个名为xmlas.txt的文本 $filedemo = "xmlas.txt"; $fpdemo = fopen($filedemo,"r"); if ($fpdemo){转载 2017-08-08 11:54:02 · 993 阅读 · 0 评论 -
搭建一套phpstorm+wamp+xdebug调试PHP的环境
现在大多数的程序员使用的调试方式一般都是echo,var_dump,file_put_contents等其他方式,效率比较低下,因此我们有必要学习用工具进行调试,工具调试主要可以用来解决以下问题:1.审核系统性能以前在一家公司维护过一个大型商城,全站页面全部能访问正常,就一个点赞的活动页面非常卡,点进去要20多秒才能完全打开,虽然里面有几百万数据,其他页面根本不会出现这么长时间加载转载 2017-06-08 11:59:59 · 2160 阅读 · 0 评论 -
PHP并发IO编程之路
并发IO问题一直是服务器端编程中的技术难题,从最早的同步阻塞直接Fork进程,到Worker进程池/线程池,到现在的异步IO、协程。PHP程序员因为有强大的LAMP框架,对这类底层方面的知识知之甚少,本文目的就是详细介绍PHP进行并发IO编程的各种尝试,最后再介绍Swoole的使用,深入浅出全面解析并发IO问题。多进程/多线程同步阻塞最早的服务器端程序都是通过多进程、多线程来解决并转载 2017-06-08 11:58:03 · 553 阅读 · 0 评论 -
PHP底层的运行机制与原理解析
PHP说简单,但是要精通也不是一件简单的事。我们除了会使用之外,还得知道它底层的工作原理。PHP是一种适用于web开发的动态语言。具体点说,就是一个用C语言实现包含大量组件的软件框架。更狭义点看,可以把它认为是一个强大的UI框架。了解PHP底层实现的目的是什么?动态语言要像用好首先得了解它,内存管理、框架模型值得我们借鉴,通过扩展开发实现更多更强大的功能,优化我们程序的性能。转载 2017-06-08 11:56:41 · 251 阅读 · 0 评论