<?php
//高先生简单验证码.
//随机数
//为什么循环0-15的数字
//因为要实现最简单的字母和数字混搭
//16进制0-9 a-f
//dechex 十进制转换为16进制
//创建一个四位的验证码.
//$nmsg. 将每次循环的值累计起来
for($i=0;$i<4;$i++){
$nmsg.= dechex(mt_rand(0,15));
}
//验证码数组准备完成,开始绘图
ob_clean();
//设定标头.告诉浏览器你要生成的MIME类型
header('Content-type:image/png');
//创建一个图形区域.赋值给资源句柄
$im=imagecreatetruecolor(75,25);
//在空白的图像区域绘制填充背景
$blue=imagecolorallocate($im,0,102,255); //颜色1 背景
$white=imagecolorallocate($im,255,255,255); //颜色2 文字
imagefill($im,0,0,$blue); //填充颜色
//生成文本信息.将验证码的字符串写入图片.
imagestring($im,5,18,5,$nmsg,$white);
//输出最终图形
imagepng($im);
//清除占用的资源
imagedestroy($im);
?> ThinkPHP中有一个debug调试功能,能输出报错文件的信息,并能看到这个函数被哪些函数调用,从框架的启动开始记录,特别方便调试。于是研究了下它的底层给予了实现。<?php //--框架核心--Start //框架内置错误处理 function errDealWith($er...
(1)swoole启动的主进程是master进程负责全局管理,然后master进程会再fork一个manager进程。(2)manager进程开始统一管理进程创建回收管理。(3)manager进程根据设置的worker_num和task_worker_num来创建work进程和task进程因此启动s...
当我们使用php爬虫采集网站时经常会遇到内容使用ajax异步加载。一般采取的方案是PHP模拟再请求api接口获取数据,但是有时候前端js加密非常麻烦,我们需要将js的加密方法转换为php方法方便curl请求。当然通过了解我们可以通过3种方案解决。第一种:使用phpv8js扩展执行js代码。(pecl...
编写socket服务检测是否有新连接加入都要使用stream_socket_accept和socket_accept来获取,但是默认是阻塞的,想要更换为非阻塞并不能用stream_set_blocking($socket, false),因为stream_set_blocking只是设置socket...
php输出指定范围的所有日期函数,网上别人封装的,道理很简单,获取最大值和最小值的时间戳,然后+1day即可,测试有效function periodDate($startDate, $endDate) { $startTime&nb...
记得在上一家公司时公司没有延迟队列,直接使用redis list进行使用,如果不到执行时间则继续丢回去,这样的方式太浪费IO,而且没办法保证执行顺序。本文没有使用有赞的redis延迟队列设计,使用的是redis有序集合的特性来完成。大致思路如下:(1).下单成功通过zadd key score va...