原创

emqtt 使用 let’s encrypt ssl证书配置

Please also set cacertfile to chain.pem
You may also set certfile to cert.pem instead of fullchain.pem

listener.wss.external.keyfile = /etc/letsencrypt/live/xxxx.com/privkey.pem

listener.wss.external.certfile = /etc/letsencrypt/live/xxxx.com/cert.pem

listener.wss.external.cacertfile = /etc/letsencrypt/live/xxxx.com/chain.pem

 

参考 https://github.com/emqx/emqx/issues/2306

https://webcache.googleusercontent.com/search?q=cache:6Jlnb2l5RJQJ:https://medium.com/%40emqtt/using-lets-encrypt-certificates-in-emq-b11e0e57efa6+&cd=1&hl=en&ct=clnk

                

从PHP7.0 升级到PHP7.4

一.新功能

1.可空类型

现在,可以通过在类型名称前面加上问号来将参数和返回值的类型声明标记为可为空。这表示和指定的类型一样,NULL可以分别作为参数传递或作为值返回。

function test(?string $name)
{
var_dump($name);
}

上面的$name 可为字符串或null.

2.void函数

引入了void返回类型。以void声明为返回类型的函数必须完全省略其return语句,或者使用空的return语句。NULL不是void函数的有效返回值。

 function swap(&$left, &$right): void
{
if ($left === $right) {
return;
}$tmp = $left;
$left = $right;
$right = $tmp;
}
    

PHP框架最新性能压力测试比较

关闭debug,无优化情况下测试。

PHP框架最新hello world压力测试 结果ab -n 10000 -c 100 -k $url:
laravel 6.5:700rps.
symfony4.4 :1300 rps.(web)
thinkphp6.0 : 2200 rps.
ubiquity 2.3 :3300rps.
phalcon 3.4.4 :6100rps.

 

PHP框架最新模板渲染hello world压力测试 结果ab -n 10000 -c 100 -k $url:
laravel 6.5:700rps.
symfony4.4 :1200 …

                

响应式图像正确设置方法

响应式图像正确设置方法,代码如下:

PC,平板,手机显示良好:

我们用<picture>标签来实现同时适配不同像素密度、不同大小的屏幕。srcset属性用来指定多张图像,适应不同像素密度的屏幕。

通过 媒体查询,来为不同宽度的屏幕设置不同的图片。

其中,1x 2x 3x 代表设备像素比

通常 pc的设备像素比为1,iphone7为2,iphone7 plubs为3,一些手机为4,还有一些为1.5,3.65等非整数值。

在下面,所有的设备像素比都要用同一张图片,这样才能显示正常。…

                

在PHP 7.4中使用预加载–Opcache Preloading

PHP 7.4增加了预加载(Opcache Preloading)的支持,这一功能可以显著提高PHP程序的运行性能。

它是如何工作的:

  • 为了预加载文件,您需要编写一个自定义PHP脚本
  • 此脚本在服务器启动时执行一次
  • 所有预加载的文件都在内存中可用于所有请求
  • 在重新启动服务器之前,对预加载的文件所做的更改不会生效

简单来说就是把PHP代码完全加载到内存中来达到提升性能的目的。

让我们深入研究一下。…

            

php设置samesite cookie,有效防止CSRF

php设置samesite cookie,支持所有PHP版本。

PHP 7.3 的setcookie函数已经支持samesite属性,但对于7.3以下版本,可以用以下函数代替:

<?php
$options = [
    'expires' => time()+18400,
    'domain' => 'localhost',
    'httponly' => false,
    'samesite' => 'Lax',
    'secure' => false,
    'path' => '/'
  ];

function samesite_setcookie($name, $value, array $options)
{
    $header = 'Set-Cookie:';
    $header .= rawurlencode($name)