随笔分类 - PHP
摘要:原理:使用预处理语句,将语句和参数分离,达到防注入的目的。 代码: $conn = mysqli_connect($CONFIG['ADDB']['HOST'],$CONFIG['ADDB']['USERNAME'], $CONFIG['ADDB']['PASSWORD'],$CONFIG['ADD
阅读全文
摘要:1、memory_get_usage — 返回分配给 PHP 的内存量 2、microtime — 差值计算 PHP 脚本执行时间 3、memory_get_peak_usage — 返回 PHP 脚本内存使用峰值 4、getrusage — 获取当前资源使用状况 Enjoy it !
阅读全文
摘要:1、Content-Type: multipart/form-data $requestDataArray = $_REQUEST; // 也可以使用 $_POST 或 $_GET 2、Content-Type: application/json $requestDataJson = file_ge
阅读全文
摘要:问题: 本地开发环境,curl 正常; 服务器环境,curl 返回 null; 排查原因: 检查php版本差异:相同 搜索curl 返回null原因,未果 服务器上使用curl命令,返回:couldn't connect to host ping 域名 ping不通 真正原因:域名未解析 解决:运维
阅读全文
摘要:1、XML 转数组: function xmlToArray($xml,$isfile=false){ //禁止引用外部xml实体 libxml_disable_entity_loader(true); if($isfile){ if(!file_exists($xml)) return false
阅读全文
摘要:方法1: 使用 usort 函数,不需要提取排序内容到一维数组,而且排序方法更为灵活。 usort($users, function($a, $b) { $al = strlen($a['name']); $bl = strlen($b['name']); if ($al == $bl) retur
阅读全文
摘要:项目中有计算当前时间与指定时间差的需求,记录下实现代码。 $date = '2020-11-11 12:59:59'; $carbon = carbon::parse ($date); // 格式化一个时间日期字符串为 carbon 对象 $int = (new Carbon)->diffInSec
阅读全文
摘要:由于之前项目中没有使用过 Guzzle ,所以记录下读取结果的方法。 $client = new \GuzzleHttp\Client(); # 获取一个外部 API 接口: $response = $client->get('http://api.map.baidu.com/geocoder/v2
阅读全文
摘要:代码示例: switch(true) { case (strlen($foo) > 30): $error = "The value provided is too long."; $valid = false; break; case (!preg_match('/^[A-Z0-9]+$/i',
阅读全文
摘要:直接上代码: $ip = isset($_SERVER['HTTP_X_FORWARDED_FOR'])?$_SERVER['HTTP_X_FORWARDED_FOR']:$_SERVER['REMOTE_ADDR']; 解释: 如果没有使用代理,则 REMOTE_ADDR 即为客户端真实 IP.
阅读全文
摘要:注意:PHP为脚本语言,脚本执行完毕Redis 连接自动关闭,所以连接池并不能跨脚本使用。 使用连接池的原因:在高并发情况下,频繁地创建和释放 Redis 连接会对性能有较大影响。 连接池的原理:预先创建多个 Redis 连接,在进行 Redis 操作时直接获取已经创建的连接进行操作,操作完成后不会
阅读全文
摘要:password_hash 函数在 PHP 5.5 时被引入。 此函数现在使用的是目前 PHP 所支持的最强大的加密算法 BCrypt. 项目中使用的 PHP 版本为 7.2 ,经排查发现该函数导致服务器在并发请求情况下 PHP-FPM 占用 CPU 过高,详细原因不明。 建议大家非必要不要在 PH
阅读全文
摘要:PDO 防注入的原理:将查询语句和具体的参数值分开发送到数据库服务器,在语句执行前参数值不会被解析。 示例代码: $dbh = new PDO("mysql:host=localhost; dbname=demo", "user", "pass"); $dbh->setAttribute(PDO::
阅读全文
摘要:记录下 Laravel 框架数据库查询构造器中 when 的一次错误用法。前车之鉴,后车之师。 错误用法: ->when(!empty($openid),function($query,$openid){ return $query->where('openid',$openid); } 正确用法1
阅读全文
摘要:1、下载 Redis 4.0 版本,解压后运行redis-server.exe(不要关闭窗口)。 2、下载 PHP 7.3 版本对应的redis扩展文件 https://windows.php.net/downloads/pecl/snaps/redis/4.2.0/ 3、解压后将 php_redi
阅读全文
摘要:原始用法: foreach (array_expression as $value) statement 引用用法: 通过在 $value 之前加上 & 来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。 <?php $arr = array(1, 2, 3, 4); foreach ($arr
阅读全文
摘要:mysql_real_escape_string () - 转义 SQL 语句中使用的字符串中的特殊字符。 为了安全起见,在像MySQL传送查询前,必须调用这个函数(除了少数例外情况)。 本扩展自 PHP 5.5.0 起已废弃,并在自 PHP 7.0.0 开始被移除。 说明: mysql_real_
阅读全文
摘要:1、安装 lnmp 一键安装包: wget http://soft.vpser.net/lnmp/lnmp1.7.tar.gz -cO lnmp1.7.tar.gz && tar zxf lnmp1.7.tar.gz && cd lnmp1.7 && ./install.sh lnmp 2、生成 s
阅读全文
摘要:/** * 图片链接转换为 base64 文件流 * @param $imgUrl * @return string */ function img_url_to_base64($imgUrl) { $imageInfo = getimagesize($imgUrl); return 'data:'
阅读全文
摘要:本地测试发邮件正常,在腾讯云服务器发现无法发送。 排查配置和环境均无问题,后来发现是腾讯云默认限制云服务器 TCP 25 端口连接外部地址。 解决方法: 1、登录腾讯云控制台,鼠标移动到账号,点击安全管控: 2、点击25端口解封: 3、选择服务器,提交即可。 Enjoy it !
阅读全文

浙公网安备 33010602011771号