编译安装PHP扩展:imagick

由于wordpress建议安装imagick,而它默认没有加入到php源码中,于是记录一下自己编译安装imagick扩展的过程:

wget https://pecl.php.net/get/imagick-3.4.4.tgz
tar -xvf imagick-3.4.4.tgz && cd imagick-3.4.4

/usr/local/opt/php@7.4/bin/phpize

# 这个目录似乎没用到
mkdir /usr/local/opt/imagick

./configure --prefix=/usr/local/opt/imagick --with-php-config=/usr/local/opt/php@7.4/bin/php-config

报错:

checking ImageMagick MagickWand API configuration program... checking Testing /usr/local/bin/MagickWand-config... Doesn't exist
checking Testing /usr/bin/MagickWand-config... Doesn't exist
checking Testing /usr/sbin/bin/MagickWand-config... Doesn't exist
checking Testing /opt/bin/MagickWand-config... Doesn't exist
checking Testing /opt/local/bin/MagickWand-config... Doesn't exist
configure: error: not found. Please provide a path to MagickWand-config or Wand-config program.

解决办法:

yum install -y ImageMagick-devel

最后:

make && make install

vi /usr/local/etc/php/7.4/php.ini

# 在最后加入:
extension=imagick.so

# 查看是否OK:
/usr/local/opt/php@7.4/bin/php -m | grep imagick

重启php-fpm生效:

systemctl restart php-fpm@7.4

记几次面试他人的经历

最近这段时间由于领导没空,让我临时当面试官?,虽然我也不是什么大牛,但是还算读得起我这4、5年的工作经验吧,记录一下我当面试官的一些经历,可能由于我出的面试题是真正我自己出的,而不是网上copy的那些,导致很多面试者表现不是特别好。出于某些原因,所有人名字均用字母表示。

Continue reading "记几次面试他人的经历"

MySQL 死锁产生的原因和“超卖”现象

死锁其实很好理解,就是两个会话分别在等待对方占有锁的释放。这个概念不仅仅是MySQL数据库中的,计算机中一些资源的占有和释放,都可能会产生死锁。

在MySQL数据库中,举个例子,由于代码设计不当,比如两个事务会话中, 都使用读锁去占有一条数据,但是两个会话却都想更新这条数据,如果是并发请求,则会产生死锁,看以下SQL执行顺序:

begin;
select * from goods_sku where id = 1 in share mode;
update goods_sku set stock = stock - 1 where id = 1 and stock > 0;
commit; 

Continue reading "MySQL 死锁产生的原因和“超卖”现象"

查看Linux服务器的负载

服务器性能指标一般是指CPU、内存、磁盘IO、网络连接等相关信息,下面介绍几个命令用来查看CPU和内存的信息。

w命令

➔ w
 11:37:56 up 639 days, 12:46,  1 user,  load average: 0.33, 0.12, 0.07
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/3    58.32.4.73       11:25    4.00s  0.18s  0.00s w

第一行:当前时间 启动时长(没有关机和重启),当前用户数量,过去1分钟、5分钟、15分钟前的负载,一般来说,负载的值小于cpu数量*2时,服务器可以流畅运行,当大于这个值时,服务器就有一定压力了。

Continue reading "查看Linux服务器的负载"