public function climage()
{

    $ids = Db::name('attachment')->where(['siteid' => 71])->column('id');

     $res = Db::name('attachment_data')->where(['id' => ['IN', $ids]])->select();

    // 目标根目录(当前项目中的 sxhkxy 文件夹)
    $targetRootDir = '**********/';

    // 源目录(原目录的路径)
    $path = '*************/';

    // 支持的图片扩展名
    $imageTypes = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp'];

    // 模拟的二维数组,包含 fileext 和 attachment
    $data = [
        ['fileext' => 'jpg', 'attachment' => '202108/70fa593473ab7ca.jpg'],
        ['fileext' => 'jpg', 'attachment' => 'ueditor/image/202108/16303821465fca2e.jpg'],
        ['fileext' => 'doc', 'attachment' => 'ueditor/file/202110/16354670150e0539.doc'],
        // 更多的数据...
    ];
    $data=$res;

    // 遍历二维数组,处理每个文件
    foreach ($data as $item) {
        // 获取扩展名和附件路径
        $fileext = strtolower($item['fileext']);
        $attachment = $item['attachment'];

        // 判断文件扩展名是否是图片类型
        if (in_array($fileext, $imageTypes)) {
            // 构建原图片的完整路径
            $sourceFile = $path . $attachment;

            // 确认源文件是否存在
            if (file_exists($sourceFile)) {
                // 提取文件名和文件夹路径
                $fileDir = dirname($attachment); // 获取文件夹路径
                // var_export($fileDir);
                // die;
                $fileName = basename($attachment); // 获取文件名

                // 在目标根目录下创建相应的文件夹路径
                $targetDir = $targetRootDir . $fileDir;

                // 如果目标文件夹不存在,创建它
                if (!is_dir($targetDir)) {
                    mkdir($targetDir, 0777, true);  // 递归创建目录
                }

                // 构建目标文件的完整路径
                $targetFile = $targetDir . '/' . $fileName;

                // 复制图片到目标目录
                if (copy($sourceFile, $targetFile)) {
                    echo "文件 '{$attachment}' 成功复制到 '{$targetFile}'\n";
                } else {
                    echo "文件 '{$attachment}' 复制失败!\n";
                }
            } else {
                echo "源文件 '{$sourceFile}' 不存在!\n";
            }
        } else {
            echo "文件 '{$attachment}' 不是有效的图片格式,跳过...\n";
        }
    }
    die;

    //备选方案,批量处理大数据的
    set_time_limit(0); // 防止超时

    $batchSize = 100; // 每批次处理100个文件
    $data = [
        // 示例数据
        ['fileext' => 'jpg', 'attachment' => 'ueditor/image/202108/1630382158169288.jpg'],
        ['fileext' => 'png', 'attachment' => 'ueditor/image/202109/1630482158169289.png'],
        // 更多的数据...
    ];

    $totalCount = count($data);
    $batches = array_chunk($data, $batchSize); // 将数据分批次处理

    foreach ($batches as $batch) {
        foreach ($batch as $item) {
            // 处理每个文件的逻辑
            // ...
            // 模拟复制操作
            echo "处理文件:{$item['attachment']}\n";
        }

        // 每处理完一个批次后清理内存
        ob_flush();
        flush();
    }

    echo "处理完成!";
    //end
}


点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部
{__SCRIPT__}