发布时间:2023-10-01 15:00
闲鱼转转作为国内最大的二手电商平台,并且现今处于其流量红利阶段。我们在这里实现了闲鱼转转店群的集中化管理,这里我们我介绍下我们在做系统过程中用到的技术,即后天实现方式之workerman 高性能PHP Socket即时通讯框架。
闲鱼转转两个平台处于流量的红利期,新号上来直接分配流量。批量化操作多号进行售卖产品,则可达到意想不到的结果。
我们这里主要实现了闲鱼转转平台的各种手机端功能需要的加13316518691,聊天集中化,订单集中化,发布商品自动化,发货自动化,自动统计利润等功能。在实现这些功能的过程中我们用到了很多的技术,今天我们就后台实现技术的其中之一点进行介绍。
话不多说,我们直接上代码。后续会进行整个项目的介绍,敬请关注。
/** 上传文件客户端 **/
// 上传地址
$address = \"127.0.0.1:8333\";
// 检查上传文件路径参数
if(!isset($argv[1]))
{
exit(\"use php client.php \\$file_path\\n\");
}
// 上传文件路径
$file_to_transfer = trim($argv[1]);
// 上传的文件本地不存在
if(!is_file($file_to_transfer))
{
exit(\"$file_to_transfer not exist\\n\");
}
// 建立socket连接
$client = stream_socket_client($address, $errno, $errmsg);
if(!$client)
{
exit(\"$errmsg\\n\");
}
// 设置成阻塞
stream_set_blocking($client, 1);
// 文件名
$file_name = basename($file_to_transfer);
// 文件名长度
$name_len = strlen($file_name);
// 文件二进制数据
$file_data = file_get_contents($file_to_transfer);
// 协议头长度 4字节包长+1字节文件名长度
$PACKAGE_HEAD_LEN = 5;
// 协议包
$package = pack(\'NC\', $PACKAGE_HEAD_LEN + strlen($file_name) + strlen($file_data), $name_len) . $file_name . $file_data;
// 执行上传
fwrite($client, $package);
// 打印结果
echo fread($client, 8192),\"\\n\";
use Workerman\\Worker;
require_once ‘/your/path/Workerman/Autoloader.php’;
$worker = new Worker(‘BinaryTransfer://0.0.0.0:8333’);
// 保存文件到tmp下
w o r k e r − > o n M e s s a g e = f u n c t i o n ( worker->onMessage = function( worker−>onMessage=function(connection, $data)
{
s a v e p a t h = ′ / t m p / ′ . save_path = \'/tmp/\'. savepath=′/tmp/′.data[‘file_name’];
file_put_contents($save_path, $data[‘file_data’]);
$connection->send(“upload success. save path $save_path”);
};
Worker::runAll();