S.O.I.L.D 之单一职责
1 | <?php |
字节转换
1 | /** |
php多线程
1 | // 继承 Thread 的类具有创建线程的能力 |
大文件传输解决方案
1 | public function sliceDownload() |
PHP 生成奖状
1 | ob_clean(); |
Composer install 报错
1 | Finished: success: 62, skipped: 0, failure: 0, total: 62 |
PHP-FPM 与 Nginx 的通信机制总结
1 | PHP-FPM 即 PHP-FastCGI Process Manager, 它是 FastCGI 的实现,并提供了进程管理的功能。进程包含 master 进程和 worker 进程两种;master 进程只有一个,负责监听端口,接收来自服务器的请求,而 worker 进程则一般有多个(具体数量根据实际需要进行配置),每个进程内部都会嵌入一个 PHP 解释器,是代码真正执行的地方 |
Laravel 报错:PHP Fatal error: Uncaught ReflectionException: Class request does not exist
1 | 在 App\Exceptions\Handler::report() 方法里,使用: |
JSON 响应出现浮点小数溢出
1 | 调整 php.ini 中 serialize_precision (序列化精度) 的大小来解决这个问题。 |
原码、反码、补码
1 | 正数的原码、反码、补码都一样 |
APP_KEY
1 | 只有一个地方会用到 APP_KEY:cookies。Laravel 使用它来加密所有的 cookies,在将 cookie 返回给用户之前 Laravel 会对 cookie 进行加密,然后再返回给用户,这样客户端就无法自己修改 cookie 来伪装成管理员或者其他用户了。 |
PHP 识别相片
1 | PHP 识别相片是否是颠倒的,并且重新摆正相片https://learnku.com/articles/31235 |
Composer 镜像限额,出现要求用户名认证
1 | 从 GitHub 下载 Zip 代码包而不是 CDN:https://learnku.com/articles/30415 |
AB 压测
1 | ab -c 20 -t 10 -k -T "application/json" -H "Authorization:Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvd3d3LnpoemhlLmNvbSIsImlhdCI6MTU2MzE4MjA1OCwiZXhwIjoxNTY2MzM1NjU5LCJuYmYiOjE1NjMxODIwNTksImp0aSI6IlRiYXR5amhpMGJ6eHRNeEciLCJzdWIiOjEsInBydiI6Ijg3ZTBhZjFlZjlmZDE1ODEyZmRlYzk3MTUzYTE0ZTBiMDQ3NTQ2YWEifQ.PV-S7b_fbSPgtAk-6r-cDqGkoFL-UOsGJWVfQUV6p5E" http://ys.test/api/articles |
php爬虫框架Goutte
1 | composer require fabpot/goutte |
防恶意频繁提交
1 | /** |
Goutte爬取 IP 代理池
1 | function getProxyIPPool(){ |
微软小冰接口的颜值检测
1 | $face = new \Hanson\Face\Foundation\Face(); |
php-fpm max_children 优化
1 | ps -ylef --sort:rss 此命令可以查看当前服务器所有的进程以及占用内存,留意 RSS 那列就是占用的内存数 http://hanc.cc/index.php/archives/179/ |
使用多个同一数据库驱动
1 | 新项目需要连接两个mysql数据库,然而却出现无论如何也查询不了第二个数据库的情况。 |
PHP的MD5加密与JAVA的MD5加密不一致
1 | android端正确的MD5加密代码 |
生成条形码
1 | composer require codeitnowin/barcode |
Composer 输入账号密码
1 | 把 composer.lock 文件, vendor 目录删掉。 然后 |
foreach 引用
1 | $array = ['zero', 'one', 'two', 'three']; |
获取日期数组
1 | function getDateRange($startDate, $endDate){ |
女神QQ号码
1 | 取整=>取余=>取余*10+取整。。。。。取余取整的对象都是10的倍数,根据位数而定,每次取整之后就是一位,循环直到数字等于0。 |
PHP实现linux命令tail -f
1 |
|
Unicode到UTF-8
1 |
|
PDO 防止 sql 注入
1 | $user=$_POST['user']; $pass=$_POST['pass']; |
二进制上传图片
1 | $postData=file_get_contents('C:\Users\ASUS\Pictures\Saved Pictures\2.jpg'); |
order by 进行盲注
1 | $username = $_POST['username']; |
gbk宽字节注入
1 | $conn = mysql_connect('127.0.0.1','root','xxx'); |
Composer 加速
1 | composer global require hirak/prestissimo |
文件下载乱码
1 | //https://www.helingfeng.com/2018-05-02/php-file-download-garbled/ |
直接使用 mysql utf8 存储 超过三个字节的 emoji 表情
1 | 由于现在数据的版本是5.5.2,但是看网上说要直接存储emoji表情,需要升级到5.5.3然后把字符集设置为utf8mb4,但是升级数据库感觉属于敏感操作 |
二分查找
1 | https://learnku.com/articles/31829 |
无限分类
1 | $arrs = [ |
php加密
1 | AES 加密 / 解密 |
文字生成点阵图
1 |
|
Guzzle 中间件进行优雅的请求重试
1 | use GuzzleHttp\Psr7\Request; |
二进制运算符按位与 &
1 | 爱好: 篮球 ☑ 足球 ☑ 羽毛球 ☑ |
Composer 安装插件swap 内存不足
1 | https://learnku.com/laravel/t/27985 |
crc32 检错数据
1 | $checksum = crc32("The quick brown fox jumped over the lazy dog."); |
下载带有换行符的文件内容
1 | $lists='tFwdQlk3Xs,mSL6m9P19Y,2sF2r7MxBh'; |
两个字符串的相似度
1 | // 输入拼写错误的单词 |
两个文件是否相同
1 | define('READ_LEN', 4096); |
大转盘红包概率
1 | function getPrize($prizes) { |
实现http协议
1 | 使用 stream_socket_server 监听tcp连接,并实现http协议。 访问http://jc91715.top:8080体验 |
排名算法支持重复排名
1 | $arr = [ |
new static 和 new self
1 | class Father { |
PHP 导出 PDF
1 | require_once('TCPDF/tcpdf.php'); |
strtotime 的困惑
1 | var_dump(date("Y-m-d", strtotime("-1 month", strtotime("2017-03-31")))); |
正则匹配emoji
1 | /[\w\x{4e00}-\x{9fa5}]{2,25}/u |
合并一个或多个数组
1 | $ar1 = array("color" => array("favorite" => "red"), 5);\ |
存储货币
1 | public function setPriceAttribute($value) |
MySQL Blob 类型
1 | $filename = 'filename.txt'; |
中文分割
1 | function split_cn($arr){ |
文件大小
1 | function format_size($size) |
时间差
1 | function timediff($begin_time,$end_time) |
数组分组
1 | function array_group_by($arr, $key) |
日期获取星期
1 | function get_week($date){ //强制转换日期格式 |
Laravel 距离排序
1 | public function getDistance($lat, $lng) |
二维数组去重
1 | public function assoc_unique(&$arr, $key){ |
排序
1 | function list_sort_by($list,$field, $sortby='asc') { |
字符串转换成数组
1 | function strToArray($string) { |
创建图片上传目录
1 | function my_mkdir($Folder){ // 创建图片上传目录和缩略图目录 |
删除目录
1 | /** |
xml 转为 array
1 | function xmlToArray($xml) { |
递归重组
1 | function node_merge($attr, $arr) { |
获取文件信息
1 | function get_file_info($filepath='', $key=''){ |
非递归实现查询该目录下所有文件
1 | /** |
单例cron
1 | 同时消费队列的进程不得超过1个 |
每三位加个逗号分割
1 | $input = "12345678"; |
Fibonacci数列
1 | $fib = function($n)use(&$fib) |
验证日期非HTML字符
1 | date('Y-m-d',strtotime('2019-09-09'))=='2019-09-09' |
ip限制
1 | function ipLimit(){ |
PHP 导出 Excel
1 | /**\ |
使用双向链表
1 | class MyList |
守护进程
1 | fork 子进程 |
如何获得每个父母的 N 个相关模型
1 | https://softonsofa.com/tweaking-eloquent-relations-how-to-get-n-related-models-per-parent/ |
防止 XSS 注入
1 | htmlspecialchars() 函数把一些预定义的字符转换为 HTML 实体 |
PHP 使用 Redis 实现分页
1 | namespace app\Constants\Nomal; |
繁体简体互转
1 | https://github.com/BYVoid/OpenCC |
接入 paypal PHP-sdk 支付 / 回调 / 退款全流程
JavaScript 混淆表达式https://jscrew.it/
phpstorm 下安装 Laravel-ide-helper
PHP 拼接微信好友头像https://github.com/moxun33/imageMergerUtil/blob/master/MergeImage.class.php