将图片由 RGB 转为 CMYK 格式

$file = 'orignal.png';
$file_cmyk = str_replace('.png', '_cmyk.jpg', $file);
$icc1 = \Yii::getAlias('@vendor/imagine/imagine/lib/Imagine/resources/color.org/sRGB_IEC61966-2-1_black_scaled.icc');
$icc2 = \Yii::getAlias('@vendor/imagine/imagine/lib/Imagine/resources/Adobe/CMYK/USWebUncoated.icc');
$cmd = "convert $file -intent relative -black-point-compensation -profile $icc1 -profile $icc2 -quality 100 $file_cmyk";
system($cmd);

 

PHP-PM 执行原理

大体流程如下:主进程监听两个socket,一个接收外部 http 请求(web 服务器),另一个与子进程通信。主进程通过 proc_open 调用创建子进程,每个子进程会监听一个 socket(http 服务器),主进程将 http 请求转发给子进程进行处理。子进程在 bootstrap 阶段会 new 一个 Application (假设是 symfony 框架),后面所有的请求都不会再重复初始化 Application (因此比传统 PHP-FPM 执行速度快)。

画了一个图