Hallo zusammen,
Ich habe folgendes Problem. Ich lese daten über meine orakel db Funktion aus einer Orakel Datenbank aus und bereitdie diese Daten auf. Diese Funktion liefert mir 1 Array mit folgenden Daten zurück
die DB Daten sehen ca. so aus
Was ich damit sagen will ist, dass das Array ca. 900 Einträge hat und jeder dieser Einträge hat nochmals 140 Einträge drin.
Dieses Array zu bauen (Auslesen der Datenbank und die Aufbereitung) dauert ca. 0.93 Sekunden. Jedoch dann das Auslesen und anzeigen über ein normales foreach gibt mir einen timeout oder ist seeehr langsam
So lese ich das Array aus:
und hier ist meine Orakle DB funktion "query"
hat hier jemand eine Idee, wie ich das ganze schneller programmieren könnte?
Ich habe folgendes Problem. Ich lese daten über meine orakel db Funktion aus einer Orakel Datenbank aus und bereitdie diese Daten auf. Diese Funktion liefert mir 1 Array mit folgenden Daten zurück
PHP:
array ( 'rows' => anzahl einträge, 'row' => array (DB daten) )
die DB Daten sehen ca. so aus
PHP:
array ( [0] => array(
[0] => value,
[1] => value,
[140] => value), ....
[900] => array(
[0] => value,
[1] => value ....
[140] => value)
)
Was ich damit sagen will ist, dass das Array ca. 900 Einträge hat und jeder dieser Einträge hat nochmals 140 Einträge drin.
Dieses Array zu bauen (Auslesen der Datenbank und die Aufbereitung) dauert ca. 0.93 Sekunden. Jedoch dann das Auslesen und anzeigen über ein normales foreach gibt mir einen timeout oder ist seeehr langsam
So lese ich das Array aus:
PHP:
$reportQuery = query($sql);
// List content
$content_blk = &$report_tpl->add_block('listcontent');
$count = 1;
foreach( $reportQuery['row'] as $row )
{
$td_blk = &$content_blk->add_block('listtd');
$content_blk->add_var('nr',$count);
$count++;
foreach ( $row as $td )
{
if ( $td == '' )
{
$td_blk->add_var('name',' ');
} else
{
$td_blk->add_var('name',$td);
}
$td_blk->next_block();
}
$content_blk->next_block();
}
und hier ist meine Orakle DB funktion "query"
PHP:
function query($query='')
{
$return = array('result'=>false, 'row'=>array());
$dbUser = 'username';
$dbPass = 'password';
$server = @oci_pconnect($dbUser,$dbPass);
if ($server !== false)
{
$result = @oci_parse($server,$query);
if ( !$result )
{
show_error(oci_error($server));
} else
{
$r = @oci_execute($result);
if ( !$r )
{
// ERROR
$err = oci_error($result);
show_error($err);
}
}
}
else
{
$result = false;
show_error(oci_error($server));
}
if ( oci_statement_type($result) == "SELECT" && is_resource($result) )
{
$return['result'] = true;
while ( $row = oci_fetch_array($result,(OCI_ASSOC+OCI_RETURN_NULLS)) )
{
$return['row'][] = $row;
}
$return['rows'] = count($return['row']);
}
return $return;
}
hat hier jemand eine Idee, wie ich das ganze schneller programmieren könnte?