forwardpoint
New member
Hallo Zusammen,
Ich versuche folgendes:
Geht auch. Aber nur bis 500 Datensätzen.
Oder nur wenn die letzten 500 Betroffen sind.
Andernfalls läuft es in einen Timeout.
Kann ich den Timeout von 90 Sekunden in PHP verlängern oder die Funktionen bzw. das neuordnen und sortieren beschleunigen?
Grüße und Danke für die Hilfe
Ich versuche folgendes:
Code:
function freeposition($ID, $pos, $tab)
{
global $laspri;
if($ID == "NULL")
{
$primaryquery=
'SELECT `PRIMARY` from '.$tab.' WHERE `position` = '.$pos;
$result = mysql_query($primaryquery) or die("Anfrage fehlgeschlagen: " . mysql_error());
$line = mysql_fetch_row($result);
if(!isset($line[0]))
{
return "done";
}
else
{
$newpos = $pos + 1;
freeposition($line[0], $newpos, $tab);
return 'done';
}
}
else
{
if(isset($ID)&&isset($pos)&&isset($tab))
{
$primaryquery=
'SELECT `position` from '.$tab.' WHERE `PRIMARY` = '.$ID;
$result = mysql_query($primaryquery) or die("Anfrage fehlgeschlagen: " . mysql_error());
$line = mysql_fetch_row($result);
global $oldpos;
$oldpos = $line[0];
if($oldpos == $pos)
{
return 'done';
}
if(isset($oldpos) && $oldpos < $pos)
{
$pos = $pos + 1;
#Print 'Old: '.$oldpos.' New: '.$pos;
$query = 'UPDATE '.$tab.'
SET `POSITION` = 99999
WHERE `PRIMARY` = '.$ID;
#Print '<br>Sicherung : '.$query.'<br>';
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
}
function sub_position($ID, $pos, $tab)
{
global $oldpos;
$primaryquery=
'SELECT `PRIMARY` from '.$tab.' WHERE `position` = '.$pos;
$result = mysql_query($primaryquery) or die("Anfrage fehlgeschlagen: " . mysql_error());
$line = mysql_fetch_row($result);
$newpri = $line[0];
#Print 'newpri '.$newpri.'<br>';
if(!$newpri)
{
$query = 'UPDATE '.$tab.'
SET `POSITION` = '.$pos.'
WHERE `PRIMARY` = '.$ID;
#Print '<br>newPrimary: '.$query.'<br>';
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
return $pos;
}
else
{
$lastpri = $line[0];
$pos = $pos + 1;
$ret = sub_position($lastpri, $pos, $tab);
#Print '<br>Return: '.$ret;
return $ret;
}
}
$test = sub_position($ID, $pos, $tab);
#Print '<br>PRIMARY: '.$ID.' Test: '.$test.' Pos: '.$pos.' <br>';
while($test > $pos)
{
$test = sub_position($ID, $pos, $tab);
}
$query = 'UPDATE '.$tab.'
SET `POSITION` = '.$pos.'
WHERE `PRIMARY` = '.$ID;
#Print '<br>newPrimary: '.$query.'<br>';
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
}
else
{
Print "Nicht genug Variablen für die Funktion sub_position($ID, $pos, $tab) übergeben!<br>";
Print 'ID = '.$ID.' Position = '.$pos.' Tabelle = '.$tab;
exit;
}
}
orderposition($tab);
return 'done';
}
function orderposition($tabelle)
{
$link = db_connect();
$primaryquery=
'SELECT `PRIMARY` from '.$tabelle.' ORDER BY `position` ASC';
#Print '<br>'.$primaryquery;
$result = mysql_query($primaryquery) or die("Anfrage fehlgeschlagen: " . mysql_error());
global $counter;
$counter = 0;
while ($line = mysql_fetch_array($result, MYSQL_ASSOC))
{
foreach($line as $name=>$value)
{
$counter = $counter + 1;
$query = 'UPDATE `'.$tabelle.'` SET `position` = "'.$counter.'" WHERE `PRIMARY` = '.$value;
#Print '<br>'.$query;
$result2 = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
}
}
}
$link = db_connect(); //Geht sicher...
$PRIMARY = 102;
$artikel_position = 5;
Print 'POSITION: '.$artikel_position.' PRIMARY: '.$PRIMARY.'<br><br>';
$toprint = freeposition($PRIMARY, $artikel_position, 'warengruppen');
Print $toprint;
orderposition('artikel')
Geht auch. Aber nur bis 500 Datensätzen.
Oder nur wenn die letzten 500 Betroffen sind.
Andernfalls läuft es in einen Timeout.
Kann ich den Timeout von 90 Sekunden in PHP verlängern oder die Funktionen bzw. das neuordnen und sortieren beschleunigen?
Grüße und Danke für die Hilfe