Fatal error: Maximum execution time of 60 seconds exceeded in /srv/www/htdocs/m-system_demo/shared/include/function_php.inc on line 823
Perchè mi esce questo errore?
Fatal error: Maximum execution time of 60 seconds exceeded in /srv/www/htdocs/m-system_demo/shared/include/function_php.inc on line 823
Perchè mi esce questo errore?
Perche' superi il time out assegnato per completare lo script.Originariamente inviato da sally3000
Fatal error: Maximum execution time of 60 seconds exceeded in /srv/www/htdocs/m-system_demo/shared/include/function_php.inc on line 823
Perchè mi esce questo errore?
Risposta banale. ma con i dati che hai messo non si puo' fare altro.
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
codice:for ($w=0;$w<$numrighe;$w++) { $riga=leggi_riga($result); if (!in_array($riga['p_n'],$arra_pn)) $arra_pn[]=$riga['p_n']; $arra_loading[$w][0]=$riga['p_n']; $arra_loading[$w][1]=$riga['description']; $arra_loading[$w][2]=$riga['meas_unit']; unset($quantity_un); $q_1=esegui_query("select quantity from unloading where date_out<='$filtri[0]' and load_id='$riga[load_id]'"); for ($t=0;$t<tot_record($q_1);$t++) { $riga_1=leggi_riga($q_1); $quantity_un=$quantity_un+$riga_1['quantity'];} $arra_loading[$w][3]=$riga['quantity']-$quantity_un; unset($costo); if ($riga['unit_cost']>0) { $costo=$riga['unit_cost'];} else { $costo=order_cost($sys_par,$riga['order_n'],$riga['p_n']);} $arra_loading[$w][4]=$arra_loading[$w][3]*$costo; }
E la funzione richiamata "order_cost" è questa (se commendo la funzione non va in timeout quindi credo che il problema sia lei)
illuminatemicodice:function order_cost($sys_par,$order_n,$p_n) { $ritorno=0; $q2=esegui_query("select order_n,p_n,estim_cost from order_pn"); $tot_2=tot_record($q2); for($r=0;$r<$tot_2;$r++) { $riga2=leggi_riga($q2); $arra_order[$r][0]=$riga2['order_n']; $arra_order[$r][1]=$riga2['p_n']; $arra_order[$r][2]=$riga2['estim_cost']; } if ($sys_par=="Y") { //cerco costo for ($w=0;$w<$tot_2;$w++) { if ($arra_order[$w][0]==$order_n) { if ($arra_order[$w][1]==$p_n) { $ritorno=$arra_order[$w][2]; }} } } return $ritorno; }
troppi for... troppe funzioni non descritte e annidate in altre funzioni.... non si conoscono i dati, lo scopo, e la logica del lavoro.
sembra un programma scritto da un asociale... come si fa a darti una mano? Mi spiace, non sono in grado.
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
le funzioni leggi_riga ed esegui_query sono i semplici comandi di mysq
solo che li ho chiamati così per averli più comodi... tutto qui. Che altro non capisci??
fammi capire....Originariamente inviato da sally3000
solo che li ho chiamati così per averli più comodi... tutto qui. Che altro non capisci??
esegui_query e' piu' semplice di mysql_query ????
tot_record meglio di mysql_num_rows ? ecc.????
a me non pare.
Poi invece di for usa while, invece di estrarre il dato da un array per metterlo in un array bidimensionale metti i dati in una variabile, semplifica invece di complicare.
Eventualmente spiega il risultato che vuoi ottenere. E usa il nome originale della funzione, altrimenti sai solo tu quello che interpreti... salvo sempre che non ci siano errori nell'interpretazione del nome della funzione.
Se si impalla vuol dire che non sono il solo a cui non piace lo script. Anche php non e' tanto d'accordo.
![]()
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
lo script funziona con un numero piccolo di dati contenuti nell'array... ora lo sto provando su un db di "normali" dimensioni e mi da questo risultato.... cioè con la funzione soiora indicata va addirittura in time_out oppure ci mette una vit (più di un minuto) ad eseguire la pagina.
Ora ti spiego il tutto... forse riesci ad aiutarmi... è da lunedì che ci sto lavorando a questi maledetti script e non riesco a capire perchè si comportano così.
Allora:
Innanzitutto apro la pagina con il classico <HTML>... bla bla bla e <BODY>.
poi...
codice:$query="SELECT load_id,loading.p_n,description,meas_unit,quantity,order_n,unit_cost FROM loading inner join part on loading.p_n=part.p_n"; //lacio la select $result=mysql_query($query); //conto quanti loading ci sono $numrighe =mysql_num_rows($result); //mi creo un array per loading e uno per pn $arra_loading=array(); $arra_pn=array(); //per ogni record della select for ($w=0;$w<$numrighe;$w++) { $riga=mysql_fetch_array($result); //metto nell'array arra_pn tutti i p_n ma senza ripetizioni if (!in_array($riga['p_n'],$arra_pn)) $arra_pn[]=$riga['p_n']; //mi carico la riga del record nell'arra_loading $arra_loading[$w][0]=$riga['p_n']; $arra_loading[$w][1]=$riga['description']; $arra_loading[$w][2]=$riga['meas_unit']; unset($quantity_un); //cerco tutti gli unloading di loading $q_1=mysql_query("select quantity from unloading where date_out<='$filtri[0]' and load_id='$riga[load_id]'"); //e mi calcolo la quantità totale degli unloading for ($t=0;$t<tot_record($q_1);$t++) { $riga_1=mysql_fetch_array($q_1); $quantity_un=$quantity_un+$riga_1['quantity'];} //la quantità totale del loading è uguale alla differenza $arra_loading[$w][3]=$riga['quantity']-$quantity_un; //calcolo il costo del loading unset($costo); if ($riga['unit_cost']>0) { $costo=$riga['unit_cost'];} else { $costo=order_cost($sys_par,$riga['order_n'],$riga['p_n']);} $arra_loading[$w][4]=$arra_loading[$w][3]*$costo; } //preparo l'array finale per essere stampato for ($y=0;$y<count($arra_pn);$y++) { for ($r=0;$r<count($arra_loading);$r++) { if ($arra_loading[$r][0]==$arra_pn[$y]) { $arra_finale[$y][0]=$arra_loading[$y][0]; $arra_finale[$y][1]=$arra_loading[$y][1]; $arra_finale[$y][2]=$arra_loading[$y][2]; $arra_finale[$y][3]=$arra_finale[$y][3]+$arra_loading[$y][3]; $arra_finale[$y][4]=$arra_finale[$y][4]+$arra_loading[$y][4]; } } }
Piu'che un programmatore sei un contorsionista.
conti i record per fare un ciclo for. WHILE fa tutto da solo ed e' piu' performante.... perche' vuoi numerare l'array numerico? si numera da solo.
ma forse alla fine il tuo problema e' dato dalla query iniziale che ti rende un prodotto cartesiano e quindi poi tu ti inventi un modo per eliminare i record doppi.
Parti da un'altra considerazione. Quanti record estrai? quanti ne contiene il database? Perche' ci sono record doppi?
comincia a rispondere a queste domande.
Il silenzio è spesso la cosa migliore. Pensa ... è gratis.
non so quanti dati contiene il database... so che sono molti (più di 5000 per tabella)... ti prego aiutami perchè non ce la faccio più ... semplificamelo tu il codice please