多个标签,多个

时间:2016-05-01 21:56:50

标签: php mysql multithreading session

我正在运行多个具有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个标签... 任何帮助都会非常感激

1 个答案:

答案 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到。所以我想它也适合你......