HEX
Server: Apache/2.4.59 (Debian)
System: Linux keymana 4.19.0-21-cloud-amd64 #1 SMP Debian 4.19.249-2 (2022-06-30) x86_64
User: lijunjie (1003)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/lijunjie/swoole-cli/swoole-src-4.8.13/examples/recv_file.php
<?php
if (empty($argv[1]))
{
    $server_ip = '127.0.0.1';
}
else
{
    $server_ip = $argv[1];
}
$cli = new swoole_client(SWOOLE_TCP);
$start_ms = microtime(true);
$cli->connect($server_ip, 9501, 5);
$filesize = intval($cli->recv());
if ($filesize == 0)
{
    die("get file size failed.\n");
}
echo "file_size = $filesize\n";
$content = '';
$cli->send("get file");

$use_waitall = false;

if ($use_waitall)
{
    //waitall,需要一次性分配内存,适合小一点的文件
    $content = $cli->recv($filesize, true);
}
else
{
    //循环接收,适合大型文件
    while(1)
    {
        //超大文件接收,这里需要改成分段写磁盘
        $content .= $cli->recv();
        if (strlen($content) == $filesize)
        {
            break;
        }
    }
}
file_put_contents(__DIR__."/recv_file_".time().".jpg", $content);
echo "recv ".strlen($content)." byte data\n";
echo "used ".((microtime(true) - $start_ms)*1000)."ms\n";
$cli->close();