背景今天sentry收到报警:Declaration of (类方法1) should be compatible with (类方法2); 详情如下:Declaration of App\Services\MemcacheAgp::get($key) should be compatible with Memcached::get($key, $cache_cb = NULL...
Read More >
分类目录归档:php
2021
03-11
03-11
php中preg_match_all只能匹配100000字节的限制 NEW
背景用preg_match_all匹配时,偶尔会匹配失败,只能匹配到一部分符合的数据,代码如下://获取html文本中的a标签,然后获取 标签 <>之间的内容
function get_tag_from_html($content)
{
$pattern = "/(<a(.*)>(.*)<\/a>)|(<.*?>)/...
Read More >
2021
02-22
02-22
php中function_exists的一个坑 NEW
背景php有一个检查函数是否存在的函数function_exists,有时我们需要用到它,防止函数重复定义示例先看一段代码,代码可以正常执行test();function test(){ return true;}再看下面这段代码test();if (!function_exists('test')) { function test() { ...
Read More >
2021
02-10
02-10
php中autoload机制详解
背景PHP在魔术函数__autoload()方法出现以前,如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含进来100个类文件,或者你把这100个类定义在同一个类文件中——相信这个文件一定会非常大。但是__autoload()方法出来了,以后就不必为此大伤脑筋了,这个类会在你实例化对象之前自动加载指定的文件。autoload 机制概述在使用PHP的OO模式开发系统时,通常大家习惯上将每个类的实现都存放在一个单独的文件里,这样会很容易实...
Read More >
2021
01-27
01-27
php中的system方法偶尔会出现unable to fork
背景php代码中调用了system方法,执行了shell脚本,一开始运行正常,过一段时间偶尔会出现unable to fork的报错问题原因system调用会fork新的进程,因为每个用户有最大进程数限制,简单的说就是达到用户的进程上限了如何限制linux用户的进程数这个可以通过修改如下文件来设定:vi /etc/security/limits.conf
vpsee hard nproc 32
@student hard&...
Read More >
2021
01-16
01-16
phpstorm2020.3.1最新永久破解方法
phpstorm又更新了,截至目前为止,官网的最新版本为phpstorm2020.3.1,这次phpstorm的更新UI界面就有了很大的变化,主要是添加了对PHP8的支持,具体的可以去官网去了解哈。同样的,随着phpstorm的更新,以往的破解补丁也可能会失效。所以最新的补丁也随之而来啦。2021最新的phpstorm2020.3版本依旧可以使用此补丁破解到2099年一、下载2021年phpstorm最新破解补丁链接:https://pan.xunlei.com/s/VMR9...
Read More >
背景laravel 5.3 以后默认开启 mysql严格模式(strict)在mysql在严格模式下, 并且开启了ONLY_FULL_GROUP_BY的情况下,group by 的字段没有出现在 select 的语句中会报错.关闭了严格模式就不会报错.示例public static function orders($phase)
{
return self::select(DB::ra...
Read More >
2020
12-24
12-24
lumen项目集成laravelS后sentry无法上报的问题
背景公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目laravelS github : https://github.com/hhxsv5/laravel-s如何接入参考:https://www.phpmianshi.com/?id=195问题描述lumen项目集成laravelS后sentry无法正常上报解决方案当前项目用的sentry sdk为1.8版本,升级最新的sentry sdk 2.3 即可...
Read More >
2020
12-22
12-22
composer安装提示killed解决办法
问题描述composer 安装或者更新时报错killed ,因为当前内存不足。composer require "hhxsv5/laravel-s:3.7.8" -vvv...Killed问题原因这种情况一般是因为内存不足造成的解决方案1. 增大服务器内存2. 设置swap交换分区free -mmkdir -p /var/_swap_cd /var/_swap_#创建swap文件dd if=/dev/z...
Read More >
2020
12-21
12-21
composer autoload自动加载性能优化指南
简介composer 提供的 autoload 机制使得我们组织代码和引入新类库非常方便,但是也使项目的性能下降了不少 。composer autoload 慢的主要原因在于来自对 PSR-0 和 PSR-4 的支持,加载器得到一个类名时需要到文件系统里查找对应的类文件位置,这导致了很大的性能损耗,当然这在我们开发时还是有用的,这样我们添加的新的类文件就能即时生效。 但是在生产模式下,我们想要最快的找到这些类文件,并加载他们。因此 composer 提供了几种优化策略,下面说...
Read More >
2020
12-20
12-20
composer安装和常见问题
下载 Composer安装前请务必确保已经正确安装了 PHP。打开命令行窗口并执行 php -v 查看是否正确输出版本号。安装Composerphp -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');"
php composer-setup.php
p...
Read More >
2020
12-19
12-19
php爬虫框架简介
简介php爬虫框架有:1、phpspider,一个爬虫开发框架;2、Beanbun,用PHP编写的多进程网络爬虫框架;3、PHPCrawl,一个PHP开源的Web检索蜘蛛类库。PHP主流爬虫框架phpspider地址:https://github.com/owner888/phpspiderphpspider是一个爬虫开发框架。使用本框架,你不用了解爬虫的底层技术实现,爬虫被网站屏蔽、有些网站需要登录或验证码识别才能爬取等问题。简单几行PHP代码,就可以创建自己的爬虫,利用框...
Read More >
2020
12-17
12-17
php8世界上最好的语言新版本特性
本文只会讲述新特性的一些关键点,更详细的介绍请认真阅读官方文档。01 Union Types(联合类型)说明一点,从 PHP 7 开始,支持下面这样的语法:function sum(int $a, int $b): int { return $a + $b;}是不是越来越强类型的感觉?虽然如此,但在非严格类型模式下(strict_types=...
Read More >
2020
12-09
12-09
php中如何优雅的写复杂if-else
提前return优化逻辑结构,让正常流程走主干,非正常流程提前return,去除不必要的else优化前$a = 1;
$b = 2;
$c = 3;
if ($a == 1) {
if ($b == 2) {
&nbs...
Read More >
2020
12-08
12-08
php中如何实现SSO单点登录
什么是单点登录SSO(Single Sign-On)SSO是一种统一认证和授权机制,指访问同一服务器不同应用中的受保护资源的同一用户,只需要登录一次,即通过一个应用中的安全验证后,再访问其他应用中的受保护资源时,不再需要重新登录验证。本文以简化的PHP代码案例来让大家抛开理念,更简单认识SSO的应用。我这边简单配置了3个域名及对应的文件夹├─A 文件夹 a.com 应用系统│ ├─index.php│ └─login.php│├─B 文件夹 b.com 应用系统│ ├─ind...
Read More >
2020
12-01
12-01
php中使用swoole加速lumen项目-laravelS实战
背景公司项目严重依赖lumen系列,代码众多,重构困难,虽然访问量变大,性能问题越来越严重,急需要提升性能,于是找到了这个项目https://github.com/hhxsv5/laravel-s下面我们来实战一下环境介绍php7.2centos7swoole4.5.7lumen5.81.安装源码安装wget https://github.com/swoole/swoole-src/archive/v4.5.7.tar.gz
tar -xzv...
Read More >
2020
11-27
11-27
Fiddler抓包设置及常见问题
Fiddler简介官网:https://www.telerik.com/fiddlerFiddler是比较好用的web代理调试工具之一,它能记录并检查所有客户端与服务端的HTTP/HTTPS请求,能够设置断点,篡改及伪造Request/Response的数据,修改hosts,限制网速,http请求性能统计,简单并发,接口测试,辅助自动化测试,Fiddler抓取HTTPS请求配置由于fiddler安装后默认只能抓取http请求,如果需要抓取https请求需要进行配置。配置方式:...
Read More >
2020
11-26
11-26
php中容易出错的小案例
sprintf用到sprintf 的时候 如果有传递的变量 如果变量可能出现 % ,则容易出错<?php
$content = "%')('%s'";
$kind = 11;
$content = sprintf($content ,$kind);
var_dump($content );
//输出
PH...
Read More >
2020
11-16
11-16
从0到1搭建基于swoole的websocket服务
源码安装wget https://github.com/swoole/swoole-src/archive/v4.5.7.tar.gz
tar -xzvf v4.5.7.tar.gz
cd swoole-src-4.5.7 && \
phpize && \
./configure && \
make ...
Read More >
2020
11-11
11-11
php中global与$GLOBAL由引用产生的区别
很多人都认为global和$GLOBALS[]只是写法上面的差别,其实不然。根据官方的解释是$GLOBALS['var'] 是外部的全局变量$var本身。global $var 是外部$var的同名引用或者指针。(错误:是个别名引用而已,非指针!!!)举例说明一下:<?php
$var1 = 1;
$var2 = 2;
function test()
{
&n...
Read More >