我试图建立一个脚本,我需要读取txt文件并使用文件上的行执行某个过程。例如,我需要检查ID是否存在,如果信息已更新(如果有),则更新当前表(如果不存在),则在另一个临时表上插入一个新行,稍后手动检查。PHP提高执行多个查询时读取一千行文件的性能

这些文件可能包含超过20,30000行。

当我刚刚读取文件并从行中打印一些dummie内容时,需要40-50ms。但是,当我需要连接到数据库来执行所有这些验证时,由于超时而在停止之前停止。

这是我在做什么至今:

$handle = fopen($path, "r") or die("Couldn't get handle");

if ($handle) {

while (!feof($handle)) {

$buffer = fgets($handle, 4096);

$segment = explode('|', $buffer);

if (strlen($segment[0]) > 6) {

$param = [':code' => intval($segment[0])];

$codeObj = Sql::exec("SELECT value FROM product WHERE code = :code", $param);

if (!$codeObj) {

$param = [

':code' => $segment[0],

':name' => $segment[1],

':value' => $segment[2],

];

Sql::exec("INSERT INTO product_tmp (code, name, value) VALUES (:code, :name, :value)", $param);

} else {

if ($codeObj->value !== $segment[2]) {

$param = [

':code' => $segment[0],

':value' => $segment[2],

];

Sql::exec("UPDATE product SET value = :value WHERE code = :code", $param);

}

}

}

}

fclose($handle);

}

这是我的SQL类与PDO连接并执行查询:

public static function exec($sql, $param = null) {

try {

$conn = new PDO('mysql:charset=utf8mb4;host= '....'); // I've just deleted the information to connect to the database (password, user, etc.)

$q = $conn->prepare($sql);

if (isset($param)) {

foreach ($param as $key => $value) {

$$key = $value;

$q->bindParam($key, $$key);

}

}

$q->execute();

$response = $q->fetchAll();

if (count($response)) return $response;

return false;

} catch(PDOException $e) {

return 'ERROR: ' . $e->getMessage();

}

}

正如你所看到的,每个查询我通过Sql::exec()来做,正在打开一个新的连接。我不知道这是否可能是此过程出现延迟的原因,因为当我没有执行任何Sql查询时,脚本在ms内运行。

或者其他部分的代码可能会导致这个问题?

+0

例如,您是通过命令行还是通过HTTP和Apache在后台运行它。似乎更适合后台进程。 –

+0

当然,我不会连接到循环中的数据库,你应该保存连接到一个类属性或你有什么,并重新使用它。 –

+0

@ArtisticPhoenix这是通过cron作业在后台运行。我的意思是,cronjob调用这个php文件来执行这个函数,但它也可以手动调用(如果需要的话 - 不常见),或者在这个测试阶段,我仍然在构建脚本,然后我正在通过xhr request –

php 执行多个文件,PHP提高执行多个查询时读取一千行文件的性能相关推荐

  1. linux把没有执行权限的文件变为可执行

    上传文件到linux主机后,如果需要执行上传的文件,需要修改文件的权限.否则会弹出提示:permission denied. 更改权限的命令是chomd chmod的语法格式如下: chmod [wh ...

  2. powershell执行c语言文件,Windows Powershell 执行文件和脚本

    象运行可执行文件一样,Powershell运行文件和脚本,也必须使用绝对路径或者相对路径,或者要运行的文件必须定义在可受信任的环境变量中. 关于脚本 脚本和批处理都属于伪可执行文件,它们只是包含了若干 ...

  3. 如何用sqlplus执行一个sql文件和批量执行sql文件

    1.sqlplus执行单个SQL文件 举个例子,假设你的sql文件是test.sql ,保存路径是D:\script,那么在sqlplus里执行它,用如下语法: sqlplus> @D:\scr ...

  4. linux中把没有执行权限的文件变为可执行

    首先来看看遇到的问题: 刚刚创建的一个脚本,没有办法执行,需要进行执行的权限. 那么这里首先要学习linux如何更改权限了,命令就是chmod了. chmod的语法格式如下: chmod [who] ...

  5. springboot读取linux文件_spring\-boot以jar包方式时读取resource或是template文件 | Prayer's Laputa...

    现象 以jar包方式部署系统,想读取resource或是template下面的文件时,报 File Not Found 我遇到的情况是,整个项目达成了一个包,在开发环境(windows + idea) ...

  6. windows 下执行mysql脚本_Windows下批处理执行MySQL脚本文件

    一. @echo off Setlocal enabledelayedexpansion ::CODER BY Mark_Li POWERD BY iBAT 1.6 cd "C:\Progr ...

  7. win执行mysql建库脚本_linux执行mysql脚本文件连接本地windows数据库

    又开始玩linux了,小白一个,连ls命令都是这两天新学的,今天又学了点东西,贴上来备忘: 需求:我是想要在linux执行一个.py文件,这个文件执行后可以远程连接我的本地windows的mysql数 ...

  8. ipython下怎么运行py文件_在IPython中执行Python程序文件的示例

    简单使用了一下之后,我觉得如果有机会(公司里面编码是极不自由的,也无所谓,我在公司不做数据分析),我肯定是更喜欢使用IPython作为我的Python shell环境了.简单的接触发现了不少我喜欢的功 ...

  9. 浅谈通过信息手段提高执行力

    执行力问题如何在办公软件中得到开发和应用呢?该办公软件应提供或实现什么样的功能和服务,方可达到提高企业执行力? 管理的对象,是人.对人的管理,表层看是依靠制度,深层看.长远看,是靠文化.要形成好的管理 ...

最新文章

  1. python web框架autoreload原理(以bottle为例)
  2. Windows CE Notification API的使用方法
  3. nginx日志配置指令详解
  4. math.atan_JavaScript中带有示例的Math.atan()方法
  5. 数组求最大公约数c语言,C语言辗转相除法求2个数的最小公约数
  6. 智能机器人语音识别技术详细解析
  7. [转载] python笔记
  8. DP算法——最大子序列系列Ⅰ
  9. 微信人脸SDK集成踩坑
  10. 【寒江雪】UV+Depth信息计算世界坐标
  11. 突破蓝牙壁垒:aptX技术完美解决无线音频的延时问题
  12. 学会这些快准狠的Word技巧,你也能成为Word高手
  13. python挖矿木马_centos7系统被入侵,挂载挖矿木马-pamdicks-(1)临时处理
  14. JavaSE进阶590-597 序列化和反序列化/IO和Properties联合
  15. 手机怎么给PDF文件加密?分享一个好用加密工具
  16. C# 三菱FX PLC XYS读写,串口读写
  17. mac环境下安装drozer
  18. 我敢打赌你们都不知道,在微软中国研究院,我们拥有许多位世界一流的多媒体研究方面的专家。——比尔·盖茨
  19. 神州泰岳测试试题(笔试)
  20. 正向代理和反向代理(搬运)

热门文章

  1. 『飞秋』关于ASP.NET MVC+Repository+Service架构的一些思考
  2. 中奖福利事宜 和 跪求意见
  3. 昨天习题答案大剖析!再接再厉
  4. opencv roberts算子_图像之HOG特征描述算子-行人检测
  5. 11产品经理要懂的-人性行为之善良友好的本质
  6. 计算机小知识分享,分享几小个计算机操作技巧
  7. urlconnection java_Java 网络编程:必知必会的 URL 和 URLConnection
  8. 功能强大的JavaScript 拖拽库 SortableJS
  9. ThinkPHP6项目基操(3.控制器获取请求参数)
  10. dedecms调用某一顶级栏目下二级标签