欢迎光临
专注前后端开发技术与经验分享

php使用微秒级定时器及获取毫秒级时间戳

jiege阅读(267)

日常开发php常用的sleep()time()都只支持秒级单位,部分场景需要用到毫秒级的时间戳或定时器就比较淡疼了,在翻阅百度后总结一下:

/**
 * 获取当前毫秒级时间戳
 */
function getMillisecond() {
  list($t1, $t2) = explode(' ', microtime());
  return (float)sprintf('%.0f',(floatval($t1)+floatval($t2))*1000);
}

$startTime = getMillisecond();

usleep(1000 * 500); //微秒级定时器,一微秒等于百万分之一秒(1000*1000)

$endTime = getMillisecond();

var_dump("运行时间 => " . ($endTime - $startTime) . "ms");

运行输出结果:

demo.php:18:string '运行时间 => 501ms' (length=19)

亲测有效~

linux环境下使用命令运行php脚本

jiege阅读(721)

  • 将php脚本挂到后台运行,并输出日志到指定文件
    nohup php ./demo.php > demoLog.log &1
  • 查看上面运行的php脚本进程
    ps -aux|grep demo.php
  • 杀掉指定进程
    kill -9 ID

PHP判断变量类型是否为匿名函数

jiege阅读(1027)

PHP7新增的匿名函数,利用is_callable()检测变量是否为匿名函数

$fun = function(){
  return "我是匿名函数";
};
var_dump(is_callable($fun));
//将输出=> bool(true)

php正则匹配(.*?)失效的问题

jiege阅读(403)

今天写正则匹配一个网页的bas64图片时,死活匹配不出img标签的src属性,百度谷歌完发现是正则对匹配字符串长度和循环次数有限制,加上以下代码就正常啦:

$html = "你的html字符串";
ini_set("pcre.backtrack_limit",-1); //不限制最大回溯数
ini_set("pcre.recursion_limit",-1); //不限制最大嵌套数
preg_match_all("/src=\"(.*?)\"/s",$html,$rt);
var_dump($rt[1]);

VScode上配置Xdebug调试php代码

jiege阅读(884)

环境WSL: win10+ubuntu18.4+宝塔

1.在宝塔上为php安装xdebug扩展

( 这里以php8.0为例,其他版本也是一样的步骤,注意安装完扩展需要重启PHP才生效 )
file

2.vscode安装插件“PHP Debug”

打开vscode搜索插件“PHP Debug”安装第一个即可
file

3.根据vscode插件“PHP Debug”提示配置php.ini

返回宝塔,打开PHP8.0的配置文件,在最后一行插入:

[XDebug]
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.client_port = 9001
xdebug.remote_enable = 1
xdebug.remote_autostart = 1

保存后重启PHP
(这里xdebug端口选择9001,默认的9000端口可能会与其他软件起冲突)
file

4.vscode创建debug配置文件launch.json

打开目录: .vscode/launch.json
(如果没有这个文件请手动创建)
file
粘贴进以下配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for XDebug",
            "type": "php",
            "request": "launch",
            "port": 9001
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9001
        }
    ]
}

粘贴完成后保存文件并重启vscode

5.运行xdebug调试

打开你的php项目,在vscode内按下{f5},打上断点,发起请求后即可运行debug调试代码
file