php 执行多个文件,PHP提高执行多个查询时读取一千行文件的性能
我试图建立一个脚本,我需要读取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提高执行多个查询时读取一千行文件的性能相关推荐
- linux把没有执行权限的文件变为可执行
上传文件到linux主机后,如果需要执行上传的文件,需要修改文件的权限.否则会弹出提示:permission denied. 更改权限的命令是chomd chmod的语法格式如下: chmod [wh ...
- powershell执行c语言文件,Windows Powershell 执行文件和脚本
象运行可执行文件一样,Powershell运行文件和脚本,也必须使用绝对路径或者相对路径,或者要运行的文件必须定义在可受信任的环境变量中. 关于脚本 脚本和批处理都属于伪可执行文件,它们只是包含了若干 ...
- 如何用sqlplus执行一个sql文件和批量执行sql文件
1.sqlplus执行单个SQL文件 举个例子,假设你的sql文件是test.sql ,保存路径是D:\script,那么在sqlplus里执行它,用如下语法: sqlplus> @D:\scr ...
- linux中把没有执行权限的文件变为可执行
首先来看看遇到的问题: 刚刚创建的一个脚本,没有办法执行,需要进行执行的权限. 那么这里首先要学习linux如何更改权限了,命令就是chmod了. chmod的语法格式如下: chmod [who] ...
- springboot读取linux文件_spring\-boot以jar包方式时读取resource或是template文件 | Prayer's Laputa...
现象 以jar包方式部署系统,想读取resource或是template下面的文件时,报 File Not Found 我遇到的情况是,整个项目达成了一个包,在开发环境(windows + idea) ...
- windows 下执行mysql脚本_Windows下批处理执行MySQL脚本文件
一. @echo off Setlocal enabledelayedexpansion ::CODER BY Mark_Li POWERD BY iBAT 1.6 cd "C:\Progr ...
- win执行mysql建库脚本_linux执行mysql脚本文件连接本地windows数据库
又开始玩linux了,小白一个,连ls命令都是这两天新学的,今天又学了点东西,贴上来备忘: 需求:我是想要在linux执行一个.py文件,这个文件执行后可以远程连接我的本地windows的mysql数 ...
- ipython下怎么运行py文件_在IPython中执行Python程序文件的示例
简单使用了一下之后,我觉得如果有机会(公司里面编码是极不自由的,也无所谓,我在公司不做数据分析),我肯定是更喜欢使用IPython作为我的Python shell环境了.简单的接触发现了不少我喜欢的功 ...
- 浅谈通过信息手段提高执行力
执行力问题如何在办公软件中得到开发和应用呢?该办公软件应提供或实现什么样的功能和服务,方可达到提高企业执行力? 管理的对象,是人.对人的管理,表层看是依靠制度,深层看.长远看,是靠文化.要形成好的管理 ...
最新文章
- python web框架autoreload原理(以bottle为例)
- Windows CE Notification API的使用方法
- nginx日志配置指令详解
- math.atan_JavaScript中带有示例的Math.atan()方法
- 数组求最大公约数c语言,C语言辗转相除法求2个数的最小公约数
- 智能机器人语音识别技术详细解析
- [转载] python笔记
- DP算法——最大子序列系列Ⅰ
- 微信人脸SDK集成踩坑
- 【寒江雪】UV+Depth信息计算世界坐标
- 突破蓝牙壁垒:aptX技术完美解决无线音频的延时问题
- 学会这些快准狠的Word技巧,你也能成为Word高手
- python挖矿木马_centos7系统被入侵,挂载挖矿木马-pamdicks-(1)临时处理
- JavaSE进阶590-597 序列化和反序列化/IO和Properties联合
- 手机怎么给PDF文件加密?分享一个好用加密工具
- C# 三菱FX PLC XYS读写,串口读写
- mac环境下安装drozer
- 我敢打赌你们都不知道,在微软中国研究院,我们拥有许多位世界一流的多媒体研究方面的专家。——比尔·盖茨
- 神州泰岳测试试题(笔试)
- 正向代理和反向代理(搬运)
热门文章
- 『飞秋』关于ASP.NET MVC+Repository+Service架构的一些思考
- 中奖福利事宜 和 跪求意见
- 昨天习题答案大剖析!再接再厉
- opencv roberts算子_图像之HOG特征描述算子-行人检测
- 11产品经理要懂的-人性行为之善良友好的本质
- 计算机小知识分享,分享几小个计算机操作技巧
- urlconnection java_Java 网络编程:必知必会的 URL 和 URLConnection
- 功能强大的JavaScript 拖拽库 SortableJS
- ThinkPHP6项目基操(3.控制器获取请求参数)
- dedecms调用某一顶级栏目下二级标签