Hi, I got this code with is slow for 'big' numbers like 1kkk or more can u have any idea how i can speed up calculations ? (by not baying new server ;])
<?php
function gen_time()
{
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
//generate start time
$start = gen_time();
//items_id, number of items
$Items = "111,5000000;112,1000;203,50000;113,1000;";
$time_item = 6666611111;
$left_time = 10;
if($Items != 0 && $left_time != 0)
{
$time_item += $left_time;
$id = explode(';',$Items);
foreach($id as $n => $array)
{
if(false == empty($array))
{
$array = explode(',',$array);
$CArray[$n] = array($array['0'],$array['1'],100);
}
}
$Items = '';
$end = false;
$create = '';
foreach($CArray as $a => $b)
{
// var_dump($b); - array(3) { [0]=> string(3) "111" [1]=> string(5) "50000" [2]=> int(100) } thats why im using int its incrise a speed a little
$Type = (int)$b['0'];
$Count = (int)$b['1'];
$Time = (int)$b['2'];
//do this while time is 0 or end of qoute
while($time_item >= $Time && $end == false)
{
if($Count > 0)
{
$time_item -= $Time;
++$create[$Type];
--$Count;
}
else
{
$end = true;
break;
}
}
if($Count != 0)
{
$Items .= $Type.",".$Count.";";
}
}
}
else
{
$create = '';
$time_item = 0;
}
$end = gen_time();
//show time of script generation
echo round($end - $start,3);
?>