Karp 的技术博客
编程语言
Swoole 出现 deadlock 字样
===================================================================
 [FATAL ERROR]: all coroutines (count: 1) are asleep - deadlock!
===================================================================

 [Coroutine-1]
--------------------------------------------------------------------
#0  Swoole\Coroutine\Http\Client->recv() called at [/opt/webserver/vendor/swlib/saber/src/WebSocket.php:102]
#1  Swlib\Saber\WebSocket->recv() called at [/opt/webserver/script/src/Task/BinanceContract.php:133]
#2  Task\Test->init() called at [/opt/webserver/script/src/Task/BootScript.php:56]
编程语言
php sha256 获取 Java sha256 数据
   public String toBase58() {
       byte[] data = new byte[25];
       data[0] = COIN_VERSION;
       System.arraycopy(toArray(), 0, data, 1, 20);
       byte[] checksum = Digest.sha256(Digest.sha256(data, 0, 21));
       System.arraycopy(checksum, 0, data, 21, 4);
       return Base58.encode(data);
   }
编程语言
PHP 过滤表单输入的 emoji 表情

1.过滤emoji表情的原因

踩坑教训
Aws 非公开桶资源 PHP sdk 解决方案

<?php


use Aws\S3\S3Client;
use Model\Main\Config\DbModel;

class AwsOss
{
    const IMG = 1;
    const MP4_VIDEO = 2;

    /**
     * 获取解密后 base64文件
     * @cli php cli.php Test getObjectUrl
     * @param string $url
     * @param int $fileType 1 图片 2 mp4视频
     * @return string
     * @throws \Exception
     */
    public static function getUrlBase64(string $url, int $fileType)
    {
        $config = DbModel::formatDbConfig(AwsOss::AWS_OSS_PUBLIC_TAG);

        return self::getKycBase64File($url, $config, $fileType);
    }

    /**
     * 获取二进制加密文件
     * @param $url
     * @param array $config aws 桶配置
     * @param int $fileType 1 图片类型 2 视频类型(mp4)
     * @return string
     * @throws \Exception
     */
    private static function getKycBase64File($url, array $config, $fileType = self::IMG)
    {
        $bucket = $config['bucket'];
        $sdKParams = $config['sdk_params'];

        $fileKey = trim(parse_url($url)['path'], '/'); // 一定不能带 /

        $s3Client = new S3Client($sdKParams);
        // 下载文件资源
        $result = $s3Client->getObject(['Bucket' => $bucket, 'Key' => $fileKey]);

        $fileSourceObj = $result['Body'] ?? "";
        if ('' === $fileSourceObj) {
            throw new \Exception('文件资源拉取失败');
        }

        if ($fileType == 1) {
            $type = getimagesizefromstring($fileSourceObj)['mime']; //获取二进制流图片格式
        } else {
            $type = 'audio/mp4';
        }

        return 'data:' . $type . ';base64,' . chunk_split(base64_encode($fileSourceObj));
    }

}
编程语言
PHP - 将GD图像转换回二进制数据

我有一个从imagecreatefromstring创建的GD图像资源。经过一些图像操作后,我想将其转换回二进制数据。我该怎么做?手册中看不到任何功能...