在使用Laravel eloquent将大约25万条记录插入到MySQL数据库中时,我遇到了一个PHP执行时间错误.考虑到以下限制,我的目标是在不增加总体执行时间的情况下实现这一点:

  1. Frontend:Angular
  2. Multi-tenancy:使用以下工具实施 https://tenancyforlaravel.com/
  3. Attempted solutions:拉威尔球杆

以下是我的代码.

作业(job)档案编码-

class MedicineData implements ShouldQueue
{
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels, Batchable;

    public $data;

    public function __construct($data)
    {
        $this->data = $data;

    }

    public function handle(): void
    {
        foreach ($this->data as $key => $value) {
            $medicine = new MedicineName();
            $medicine->name = $value['name'];
            $medicine->save();
        }
    }

}

控制员档案编码

$chunks = array_chunk($data, 500);
$batch = Bus::batch([])->dispatch();

foreach ($chunks as $key => $value) {
    $batch->add(new MedicineData($value));
}

我得到一个错误的最大PHP执行时间.如何解决这个问题.

推荐答案

我使用下面的代码解决了这个问题.但将25万个数据插入我的数据库需要20多分钟.

set_time_limit(WRITE_YOUR_PREFERRED_TIME_HERE_IN_SECONDS);

我从另一篇堆栈溢出帖子中得到了解决方案.那个帖子链接是- Fatal error: Maximum execution time of 30 seconds exceeded

Php相关问答推荐

Laravel 9如何过滤$的项目与结果?

Laravel:启动下载并同时在Blade 中显示Flash消息

如何发送woocommerce订单跟踪码与短信

PHP FFI—Convert void * to int

SQLSTATE [42S02]:找不到基表或视图:1146 Table eshop. sessions不存在'''

如何优化-PHP 7.3.14+Laravel 6

如何在不指定symfony列的情况下从数据库中获取行数组

Htaccess-重写对&api.php";的API请求以及对";web.php";的其他请求

使用列入黑名单的单词和自定义业务逻辑的组合将特定的子字符串包装在HTML标记中

在PHP中循环访问多维数组,并按组显示内容

在laravel 9或10 php中向中间件响应添加自定义数据

如何使用索引加速和优化MySQL搜索

Codeigniter 4中的未定义变量$HOME

Symfony Validator:如何使用XML表示法验证深度嵌套的数据?

PHP SimpleXML:按属性值访问 node

在PHP项目中安装OpenAI PHP SDK时出现问题

奇怪的 preg_match_all() 行为

如何处理 Null 上的 array_shift() ?

Google Drive API 服务->文件->get('root') 失败并显示找不到文件. (范围问题?)

递归数组处理