我正在运行多个具有while循环的PHP脚本。这是从MySQL数据库插入和读取的。
这是一个漫长的过程,因此最多需要2个小时。 我需要做的是在同一浏览器中的多个选项卡中打开脚本。 当我这样做并在多个标签中打开脚本时,我无法打开6个标签。超过6的任何标签只是保持加载并且不显示任何内容。 当转到其他浏览器时,它可以正常工作,但是当我到达6个选项卡时,它会做同样的事情。
代码:
<?php
ini_set('memory_limit', -1);
ob_implicit_flush(TRUE);
set_time_limit(0);
$sqlselect = "SELECT * FROM old_Users Where age < 18";
$content2 = mysqli_query($conn,$sqlselect);
While($row = mysqli_fetch_assoc($content2)){
$Sql = "INSERT INTO New_Table_Users('first_name','last_name','ID') VALUES('".$row["firstname"]."','".$row["lastname"]."','".$row["idd"]."');
mysqli_query($conn,$sql);
}
?>
问题不在于RAM,CPU,因为无论什么时候我打开一个新的浏览器它都可以正常工作,但是当我尝试打开第7个标签时它只是继续加载...... 所以要打开12个标签,我需要有2个浏览器,每个应该打开6个标签... 任何帮助都会非常感激
答案 0 :(得分:0)
Dagon解决方案是最好的,但是如果您需要在PHP中处理内容并且仍然能够快速插入。
使用PDO(抱歉不喜欢mysqli),比你呼吸更快。这将插入所有数据,只需很少的查询(批处理)。甚至可以只使用一个插件。
警告:这种技术很快但知道你的极限。它需要RAM或降低同时插入的数量。
根据您插入的内容的大小,限制同时插入的数量,具体取决于您的RAM容量。有3个参数,如你所知(非常少),插入10000个合理的批次。尝试各种方法来查看数据库和服务器如何处理它。
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
public class Example implements MouseListener {
@Override
public void mouseClicked(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
}
注意:我正在使用它将数百万行插入到巨大的表中,跨越PHP7 pthreads(12个CPU x 20个核心),达到服务器的限制,使用1024个异步连接和3X 12Go RAID X4 SSD 1到。所以我想它也适合你......