PHP
文章平均质量分 64
@航空母舰
这个作者很懒,什么都没留下…
展开
-
php中的sleep和usleep
php代码的执行是单线程的,php使用php-fpm(Fastcgi 进程管理器) 负责进程的分配和管理,如果php-fpm进程数量达到了配置的最大值pm.max_children ,剩下的请求只能排队,sleep() 函数将很容易阻塞住一个进程,甚至很容易把整个网站的请求被阻塞住。原创 2023-02-02 16:43:28 · 1238 阅读 · 0 评论 -
Linux系统下配置LEMP
然后可以通过XShell访问Linux。也可以通过scp命令上传下载文件OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单。.原创 2022-08-18 09:42:33 · 285 阅读 · 0 评论 -
PHP strtotime 的 BUG
strtotime('+1 month'),strtotime('-1 month') 碰到一个月中有28, 31天的就会有问题,比如 strtotime('+1 month', strtotime('2019-10-31')) 就会跳到 12月份去,而不是11月份;从 PHP5.3 开始呢,date 新增了一系列修正短语,来明确这个问题,那就是”first day of” 和 “last day of”解决了所以一般要用strtotime('last day of -1 mont..原创 2021-12-31 18:12:48 · 546 阅读 · 0 评论 -
php curl批处理--可控并发异步
际项目或者自己编写小工具(比如新闻聚合,商品价格监控,比价)的过程中, 通常需要从第3方网站或者API接口获取数据, 在需要处理1个URL队列时, 为了提高性能, 可以采用cURL提供的curl_multi_*族函数实现简单的并发.<?phpinclude 'curl.class.php';function callback($response, $info, $error, $request){ echo 'response:<br>';原创 2012-08-17 17:11:58 · 121 阅读 · 0 评论 -
PHP 常驻内存泄漏分析定位
在使用常驻内存框架需要注意什么? 内存释放 数据污染 资源释放 静态变量保存的对象不会被释放,需要手动管理 禁止使用exit和die 禁止使用sleep时间长的函数,防止导致Worker进程退出 不同Worker进程创建的对象和连接是不能互通的,创建连接池需要注意 定义公共函数的时候要使用 function_exists 判断函数是否存在,否则会提示重名 类引入文件需要使用 include_once 或者 require_原创 2021-10-13 09:29:06 · 581 阅读 · 0 评论 -
Linux系统下配置LEMP+Redis+telnet+openssh
首先安装 openssh-server,然后可以通过XShell访问Linux。也可以通过scp命令上传下载文件sudo apt-get install openssh-server安装nginxsudo apt install nginx OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。借助于Nginx.原创 2024-04-07 09:50:33 · 633 阅读 · 0 评论 -
PHP array_merge,array_merge_recursive和+的区别
$arr1 + $arr2键名出现重复,不管是数字还是字符,统一使用首次出现的,丢弃后面出现的(前面覆盖后面)。array_merge(arr1,arr2)如果是字符,则使用后面出现的,丢弃前面出现的(后面覆盖前面) 如果是数字则全部保留。索引数组$arr1 = [1 => 'one', 3 => 'three'];$arr2 = [1 => 'new one', 6 => 'six'];$result1 = array_merge($arr1, $arr2)原创 2021-09-30 14:24:31 · 212 阅读 · 0 评论 -
PHP运行机制和原理
1.什么是opcode缓存? 当解释器完成对脚本代码的分析后,便将它们生成可以直接运行的中间代码,也称为操作码(Operate Code,opcode)。Opcode cache的目地是避免重复编译,减少CPU和内存开销。如果动态内容的性能瓶颈不在于CPU和内存,而在于I/O操作,比如数据库查询带来的磁盘I/O开销,那么opcode cache的性能提升是非常有限的。但是既然opcode cache能带来CPU和内存开销的降低,这总归是好事。 现代操作码缓存器(Optimizer+,APC2.0原创 2021-09-26 13:40:25 · 1005 阅读 · 1 评论 -
PHP运算符
PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。运算符优先级:递增/递减 > ! > 算术运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算符( ^ ) > 位运算符( | ) > 逻辑与 > 逻辑或 > 三目 > 赋值 > and > xor > or 递增/递减运算符不影响布尔值 递增NULL值为1,递减NULL值没有效果逻..原创 2021-09-23 14:38:54 · 217 阅读 · 0 评论 -
PHP引用
概念:在PHP中引用意味着用不同的名字访问同一个变量内容; 定义方式:PHP使用 ‘&’定义引用变量; 当不使用引用时,变量采取写时复制机制机制(COW):在写入时会复制一份内存进行修改,例如 //定义一个变量$a = range(0,1000);var_dump(memory_get_usage()); //打印内存使用量//定义一个变量b$b = $a; //此时$b和$a 指向同一个内存空间var_dump(memory_get_usage());//当a或b发生写入时,才原创 2021-09-23 10:27:53 · 580 阅读 · 0 评论 -
Nginx 开启PHP错误提示
在使用nginx的过程中总是会碰到nginx提示500错误,可是具体错误需要去查看错误日志文件, 很是不方便。打开错误页面提示很实用于调试PHP的时候,但不建议在线服务器开启此功能关于PHP的配置文件fpm模式和cli模式可能是两个配置文件,需要2个都修改CLI模式执行命令php phpinfo.php查看环境变量Server API => Command Lin...原创 2019-08-02 16:50:20 · 956 阅读 · 0 评论 -
MySQL server has gone away
数据库连接断开,重连机制 /** * 获取连接. * * @param string $url * * @return Connection|null * * @throws \Exception */ protected function getConn($url) { $conn = null; for ($times = 1; $times <= 3; +原创 2020-12-11 15:48:08 · 98 阅读 · 1 评论 -
RabbitMQ 延时队列
延时队列,顾名思义是带有延时功能的消息队列,列举几个使用场景:定时发公告 用户下单30分钟后未付款自动关闭订单 用户下单后延时短信提醒 延时关闭空闲客户端连接 物联网系统经常会遇到向终端下发命令,如果命令一段时间没有应答,就需要设置成超时实现方案 定时任务轮询数据库,看是否有产生新任务,如果产生则消费任务 pcntl_alarm为进程设置一个闹钟信号 swoole的异步高精度定时器:swoole_time_tick(类似javascript的setInterval)和原创 2020-09-27 15:00:24 · 1097 阅读 · 0 评论 -
循环实现1列4行
循环实现1列4行<?php foreach ($list as $key=>$product): ?> <?php echo $key % 4 == 0 ? "<tr>" : ""; ?> <td> <img class="dj-info" src="img.png"> </td> <!--不够4个空的td,循环补充4 td--> <?php if ($key == count($list)原创 2020-08-13 11:43:42 · 181 阅读 · 0 评论 -
Composer 相关
使用中国镜像composer config -g repo.packagist composer https://packagist.laravel-china.org阿里云镜像composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/取消配置:composer confi...原创 2019-03-13 16:58:53 · 306 阅读 · 0 评论 -
PHP的扩展cli模式与fpm不一致
1.安装完扩展后需要重启php2.php-fpm指定配置文件及php相关配置命令php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf3.比对php.ini和扩展目录是否一致php -i...原创 2020-03-24 12:56:55 · 856 阅读 · 1 评论 -
PHP安装扩展管理工具 pecl
PECL 的全称是 The PHP Extension Community Library ,是一个开放的并通过 PEAR(PHP Extension and Application Repository,PHP 扩展和应用仓库)打包格式来打包安装的 PHP扩展库仓库。通过 PEAR 的 Package Manager 的安装管理方式,可以对 PECL 模块进行下载和安装。安装peclc...原创 2020-03-17 17:36:09 · 638 阅读 · 0 评论 -
Swoole task来实现实时异步任务队列
原创 2016-03-24 11:32:39 · 387 阅读 · 0 评论 -
Apache模块mod_env自定义配置$_SERVER常量
原创 2017-04-12 10:41:09 · 345 阅读 · 0 评论 -
PHP 状态类
$this->delegate = $object; $this->ensureIsValidState($state); } public function getStateList() { return $this->delegate->getStateList(); } private function ensureIsValidState($state)原创 2017-03-24 17:21:36 · 112 阅读 · 0 评论 -
php 使用Callable Closure强制指定回调类型
'do sth callback';}testCallBack('callback');?>但我们不能确定回调方法是否可以调用,因此需要做很多额外的工作去检查这个回调方法是否可以调用。有什么更好的方法可以判断回调方法是否可调用? 我们可以使用callable来强制指定参数为回调类型,这样可以保证回调方法必须是可以调用的。<?phpfunction testCallBack($callback){ call_user_func($call原创 2017-01-19 14:53:55 · 220 阅读 · 0 评论 -
PHP中 new clone __clone区别
<?phpclass Person{ var $name; function __construct() { $this->name = "小aa明" . '<br />'; } function say() { echo $this->name . "在说话"; }}$ne...原创 2017-01-18 18:34:08 · 280 阅读 · 0 评论 -
用SeasLog打造PHP高性能日志组件
为什么使用SeasLog无论在什么应用中,log日志都是架构中不可缺少的一个重要组成部分,它通常是系统或软件、应用的运行记录。通过log的分析,可以方便用户了解系统或软件、应用的运行情况;如果你的应用log足够丰富,也可以分析以往用户的操作行为、类型喜好、地域分布或其他更多信息;如果一个应用的log同时也分了多个级别,那么可以很轻易地分析得到该应用的健康状况,及时发现问题并快速定位、解决问题,补救损失。为什么使用Seaslog来记录日志,而不是其他插件?归结一下几点:1,高性能,seaslog是先把原创 2017-01-13 13:45:22 · 95 阅读 · 0 评论 -
百度地图 搜索建议功能
= new BMap.Map("allmap");map.enableScrollWheelZoom(true);var point = new BMap.Point(116.331398,39.897445);var marker = new BMap.Marker(point);map.addOverlay(marker);map.centerAndZoom(point, 15);// 添加带有定位的导航控件var navigationControl原创 2016-07-12 15:19:22 · 207 阅读 · 0 评论 -
随机算法 概率算法
ght); var div_left = GetRandomNum(0,sWidth); jQuery("#div").css("position","absolute"); jQuery("#div").css("z-index",100000); jQuery("#div").css("top",div_top); jQuery原创 2016-06-28 14:19:33 · 294 阅读 · 0 评论 -
PHPStorm添加第三方库的代码自动补全
e-ide-helper-en)就可以了添加完成后看效果为什么我添加了却没有提示? 解决办法:将自应用里面的相关文件统统"Mark as Plain Text"!PhpStorm支持CI框架的自动补全git clone https://github.com/topdown/phpStorm-CC-Helpers原创 2016-03-24 15:03:54 · 212 阅读 · 0 评论 -
php mysql查询表的各字段名以及备注
UMN_DEFAULT, COLUMN_COMMENT from information_schema.columns where table_schema = 'db' and table_name='table';方法二/** * 取得数据表的字段信息 * @access public * @return array */public function getFields($tableName) { $result = $this->query('S原创 2017-06-21 11:25:02 · 760 阅读 · 0 评论 -
权限控制 之系统信息
不同的用户权限看到的菜单功能都不同,登录后的初始还原页不配权限,保证每个用户都能看到,常见的做法有,放系统信息,统计信息等public function get_sys_info() { $sys_info['os'] = PHP_OS; $sys_info['zlib'] = function_exists('gzclose') ? 'YES' : 'NO'; //zli...原创 2017-11-14 10:04:37 · 110 阅读 · 0 评论 -
PHP 可变变量 可变函数 可变参数
_num_args(),"结果:"; //输出参数个数 $total = 0; $varArray = func_get_args(); //使用func_get_args()来获取当前函数的所有实际传递参数,返回值为array类型 foreach ($varArray as $index => $var) { $total += func_get_arg($index); //获取单个参数 //$total原创 2010-12-31 09:38:08 · 267 阅读 · 0 评论 -
PHP5.3 goto break 2 和 continue 2
程序是从上向下依次执行,执行过的不能跳调回去,也不能跳过一些代码片段执行。有了goto操作符可以用来跳转到程序中的另一位置。该目标位置可以用目标名称加上冒号来标记,而跳转指令是 goto 之后接上目标位置的标记。goto语句使用goto的使用一直有争议[5.3版本增加]支持者:goto使用起来比较灵活,而且有些情形能提高程序的效率。反对者:goto语句使程序的静态结构和动态结构不一致...原创 2019-10-10 16:41:57 · 270 阅读 · 0 评论 -
微信图片防盗链破解
此图片来自微信公众平台未经允许不可引用<meta name="referrer" content="never">用PHP模拟浏览器请求$url = "http://mmbiz.qpic.cn/mmbiz_jpg/6evfQbbmz97sLMeDlTz4RUESzibgNxAtfvIRHsjZeBLql5y1M7IsjbeZBl2KlnMrbNR7c4VpcUJnVw...原创 2018-05-19 23:11:04 · 594 阅读 · 0 评论 -
PHP 进程与线程 管道
e) { $nums = Util::currentProcessNum("test:month"); $nums = (int) $nums; if ($i > 0 && $nums <= 0) { break; } $left = self::MAX_PROCES原创 2019-07-23 09:50:43 · 710 阅读 · 1 评论 -
PHP 序列化对比
$end - $start;print('JSON Encode: '.$duration.PHP_EOL);$start = microtime(true);$import = json_decode($export);$end = microtime(true);$duration = $end - $start;print('JSON Decode: '.$duration.PHP_EOL);//serialize$start = microtime(true原创 2019-06-14 09:13:20 · 147 阅读 · 0 评论 -
swoole 之http服务器静态资源
原创 2018-12-19 12:32:27 · 1901 阅读 · 0 评论 -
常用限流算法
比较好理解,在大型高并发系统中,如果没有缓存数据库将分分钟被爆,系统也会瞬间瘫痪。使用缓存不单单能够提升系统访问速度、提高并发访问量,也是保护数据库、保护系统的有效方式。大型网站一般主要是“读”,缓存的使用很容易被想到。在大型“写”系统中,缓存也常常扮演者非常重要的角色。比如累积一些数据批量写入,内存里面的缓存队列(生产消费),以及HBase写数据的机制等等也都是通过缓存提升系统的吞吐量或者实现系统的保护措施。甚至消息中间件,你也可以认为是一种分布式的数据缓存。降级服务降级是当服务器压力剧增的情况下,根据当原创 2018-11-28 08:45:11 · 180 阅读 · 1 评论 -
Redis常见7种使用场景
'Test_bihu';//字符串应用$arrCacheData = [ 'name' => 'job', 'sex' => '男', 'age' => '30'];$redis->set($strCacheKey, json_encode($arrCacheData));$redis->expire($strCacheKey, 30); # 设置30秒后过期$json_data原创 2018-11-14 10:22:33 · 200 阅读 · 0 评论 -
PHP含换行符的字符串赋值给js变量的方法
js不支持换行的长文本写法,必需要一行行的加起来var content = '<div>row 1</div>'+ '<div>row 2</div>';而不可以写成:var content = '<div> row 1</div><div>row2 </div> ';于是小加工...原创 2018-10-19 22:51:38 · 712 阅读 · 0 评论 -
PHP的HTTP认证机制
原创 2016-03-21 12:38:53 · 135 阅读 · 0 评论 -
精度计算问题
如果用PHP的算术计算浮点数的时候,可能会遇到一些计算结果错误的问题<?php$a = 0.1;$b = 0.7;var_dump(($a + $b) == 0.8); //false$f = 0.58;var_dump(intval($f * 100)); //为啥输出57解决方案:安装bcmath这个扩展bc是Binary Calculator的缩写。bc*函数的...原创 2016-03-09 12:18:07 · 341 阅读 · 0 评论 -
Swoole MVC框架Hyperf(类似laravel)
其实超出浏览器,PHP仍有用武之地,Linux上PHP通过pcntl、posix、sysvshm、sysvmsg、libevent、 swoole、proctitle等PECL扩展支持,用纯PHP就可以编写不依赖Nginx/Apache的高性能Socket应用服务器(独立控制进程,以守护进程运行)Phalcon 是开源、全功能栈、使用 C 扩展编写、针对高性能优化的PHP5框架http://myleftstudio.com/<?phpclass ControllerBase exten.原创 2016-02-26 17:06:51 · 595 阅读 · 0 评论