我正在尝试用PHP做到这一点。
此代码应在users表中插入500000行,并且在每行之后应在新行中打印$ C(last for loop counter)的值,但它无法正常工作。它正确插入行,但插入行后不打印$ c。 为什么它不能那样工作? 我怎样才能更新此代码以便像我想要的那样工作?
提前全部谢谢
<?php
$handler = new PDO("mysql:host=localhost;dbname=test",'root','');
$handler->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
function randomname(){
$len = mt_rand(20,50);
$string = "";
for($i=0;$i<$len;$i++){
$ch = mt_rand(32, 122);
if(($ch == 32 && $string != "") || ($ch >=97 && $ch <=122))
$string .= chr($ch);
else
continue;
}
return $string;
}
function randomemail(){
$len = mt_rand(7,15);
$string = "";
for($i=0;$i<$len;$i++){
$ch = mt_rand(32, 122);
if(($ch == 32 && $string != "") || ($ch >=97 && $ch <=122))
$string .= chr($ch);
else
continue;
}
if($len < 10)
return $string."@hotmail.com";
else
return $string."@gmail.com";
}
ini_set('max_execution_time', 500000);
for($c = 0; $c<=500000;$c++){
$name = randomname();
$mail = randomemail();
$query = $handler->query("insert into users(name, mail, password, created_at) values('$name', '$mail', '123132', now())");
echo "$c</br>";
}
答案 0 :(得分:0)
为了性能,PHP会在一切都完成后写入。
如果您想强制刷新输出缓冲区,可以通过使用以下代码包装应立即写出的代码来执行此操作:
ob_end_flush();
// You code goes here
ob_start();
现在,每次你写东西(使用echo,print或类似东西)时,PHP都会刷新缓冲区并写入输出。请注意,这会降低性能。还有一些网络服务器尝试禁用它,因此可能需要一些弱化。