Hallo scripters,
Ik heb een probleem met cronjob bestand.
Deze is naar mijn vermoeden te zwaar om steeds aan te roepen waardoor de website abnormaal traag wordt. Ik heb me laten vertellen dat er mogelijk dubbele dingen in voorkomen en onnodige dingen aangeroepen wordt. Wellicht wil iemand mij helpen..tegen betaling natuurlijk!
Zie onderstaand mijn bestandje:
Alvast bedankt,Code:<?php import_request_variables('gprc'); include('.htinc/_mysql.inc'); include('.htinc/_general.inc'); include("class.phpmailer.php"); $dbh = new GenericDatabaseClass(); $qry="select site_title,site_email,decrease_bid,robot_time,total_robot from general_setting"; $res=$dbh->query($qry); $row=mysql_fetch_object($res); $SITE_TITLE=stripslashes($row->site_title); $SITE_EMAIL=stripslashes($row->site_email); $bid_per_rate=stripslashes($row->decrease_bid); $robot_time=stripslashes($row->robot_time); $total_robot=stripslashes($row->total_robot); $Time_Zone_Diff=0; $CURRENT_TIME=(time()+$Time_Zone_Diff); $CURRENT_DATE=date("Y-m-d",$CURRENT_TIME); $CURRENT_Time=date("Y-m-d H:i:s",$CURRENT_TIME); $END_Time=date("d-m-Y H:i:s",$CURRENT_TIME); $Today_Time=date("H:i:s",$CURRENT_TIME); $Res=$dbh->query("select * from bid where status='Y' and start='Y' and deleted='N' and end_bid!='Y'"); while($Data=@mysql_fetch_object($Res)) { $start_auc_time=get_com_timestamp($Data->start_auction,$CURRENT_DATE); $end_auc_time=get_com_timestamp($Data->end_auction,$CURRENT_DATE); $Entrydate=explode(" ",$Data->entrydate); $Date_array=explode("-",$Entrydate[0]); $Time_array=explode(":",$Data->end_auction); $Final_End_time=mktime($Time_array[0], $Time_array[1],$Time_array[2], $Date_array[1], ($Date_array[2]+($Data->total_days-1)), $Date_array[0]); $Final_end_time=(($Final_End_time+$Data->pause_time)-$CURRENT_TIME); if($CURRENT_TIME>$start_auc_time && $CURRENT_TIME<$end_auc_time && $Data->end_bid!='E') { if($Data->running=='N') { if($Data->start_pause=='Y') $dbh->query("update bid set running='Y' where id='$Data->id'"); else $dbh->query("update bid set running='N',pause_time='0' where id='$Data->id'"); } else if($Data->running=='Y') { if($Data->start_pause=='Y') $dbh->query("update bid set running='Y' where id='$Data->id'"); else $dbh->query("update bid set running='N',pause_time='0' where id='$Data->id'"); } } else if($Final_end_time<=0 && $Data->end_bid!='E' && $Data->end_bid!='S') { if($Data->running=='N' ) $dbh->query("update bid set end_bid='E',update_extend='".$CURRENT_TIME."',pause_time='0',running='Y' where id='$Data->id'"); } else if($Data->end_bid=='E') { if($Data->start_pause=='Y') $dbh->query("update bid set running='Y' where id='$Data->id'"); else $dbh->query("update bid set running='N' where id='$Data->id'"); } } $Res=$dbh->query("select * from bid where status='Y' and start='Y' and deleted='N' and end_bid!='Y' and running='Y'"); while($Data=@mysql_fetch_object($Res)) { $Res22=$dbh->query("select final_bid,bid_rate from bid where id='".$Data->id."'"); $Data22=@mysql_fetch_object($Res22); $last_bid=($Data22->final_bid+$Data22->bid_rate); $Max_user=Get_Highest_Bidder($Data->id); $sql="select user_id from auto_bid where item_id='".$Data->id."' and user_id!='$Max_user' and $last_bid between bid_from and bid_to and deleted='N' and status='Y' and counter>0"; $sqlResult=$dbh->query($sql); while($data=mysql_fetch_object($sqlResult)) { $user_id=$data->user_id; $today = date("Y-m-d H:i:s"); $sqlResult1=$dbh->query("select status,mobile,email,city,balance from users where deleted='N' and user_id='$user_id'"); $sqlRow1=mysql_fetch_object($sqlResult1); $get_balance=Get_Balance($user_id); $block_user=Get_Block_User($user_id); if($block_user==0) { if($sqlRow1->balance>=$bid_per_rate) { if($sqlRow1->status=='Y') { $Res3=$dbh->query("select final_bid,bid_rate from bid where id='".$Data->id."' and status='Y' and start='Y' and deleted='N' and end_bid!='Y' and running='Y'"); $Data3=@mysql_fetch_object($Res3); $dbh->query("update bid set bid_counter=bid_counter+1,update_extend='".time()."', final_bid=final_bid+bid_rate, last_mobile='$sqlRow1->mobile' where id='".$Data->id."' and end_bid!='Y'"); $dbh->query("insert into amount_transfer (user_id, entrydate, amount, pay_type, reason) values('$user_id', now(), '$bid_per_rate', 'Debit', 'Bidding on auction')"); $dbh->query("update users set balance=balance-'$bid_per_rate' where user_id='$user_id'"); $bid_amount=($Data3->final_bid+$Data3->bid_rate); $dbh->query("update auto_bid set counter=counter-1 where user_id='$data->user_id' and item_id='".$Data->id."'"); $dbh->query("update auto_bid set status='N' where (bid_to<=$bid_amount or counter<=0) and status='Y' "); $dbh->query("insert into add_bids(item_id,user_id,bid_rate,bid_time,auction_code,mobile_no, bid_type, city, bidbutler_type) values('".$Data->id."','$user_id','$bid_amount','$today','$Data->auction_code','$sqlRow1->mobile', 'A', '$sqlRow1->city', 'B')"); $grt_auction_bid=Get_Auction_Mail($user_id); if($grt_auction_bid=='Y') { $Email_info=Email_info(12); $subject1=$Email_info['subject']; $message1=$Email_info["message"]; eval("\$message1 = \"$message1\";"); $mail = new PHPMailer(); $mail->From = $SITE_EMAIL; //site url of sender $mail->FromName = $SITE_TITLE; //site title of sender $mail->AddAddress($sqlRow1->email); // email address of reciever $mail->WordWrap = 50; // set word wrap $mail->IsHTML(true); // send as HTML $mail->Subject = $subject1; // subject of mail $mail->Body = $message1; // body of mail $mail->Send(); } } } } } } $result=$dbh->query("select end_bid,bid_rate,robot_id,id,target_price,final_bid,normal_rate,pause_time,extends_time,auction_code from bid where status='Y' and start='Y' and deleted='N' and end_bid='E' and robot_system='S'"); if(@mysql_num_rows($result)>0) { while($Data=@mysql_fetch_object($result)) { if($Data->final_bid) $Max_bid=number_format($Data->final_bid, 2, '.', ''); else $Max_bid=number_format($Data->normal_rate, 2, '.', ''); if($Data->pause_time==0) $End_time=($Data->update_extend+($Data->extends_time)); else $End_time=$Data->pause_time; $End_time=($End_time-$CURRENT_TIME); if($Data->target_price>$Data->final_bid) { if($End_time<=$robot_time) { $Robot_id=Auto_bid_dummy($Data->id,$Data->robot_id); if($Robot_id!=0) { $sqlResult1=$dbh->query("select status,mobile,email,city,balance,username from users where deleted='N' and user_id='$Robot_id'"); $sqlRow1=mysql_fetch_object($sqlResult1); $dbh->query("update bid set bid_counter=bid_counter+1, update_extend='".$CURRENT_TIME."', final_bid=final_bid+bid_rate, pause_time='0', last_mobile='$sqlRow1->mobile' where id='$Data->id' and end_bid!='Y'"); $bid_amount=number_format(($Data->final_bid+$Data->bid_rate), 2, '.', ''); $dbh->query("insert into add_bids(item_id,user_id,bid_rate,bid_time,mobile_no, bid_type, city, bidbutler_type, auction_code) values('$Data->id','$Robot_id','$bid_amount', now(),'$sqlRow1->mobile', 'A', '$sqlRow1->city', 'S','$Data->auction_code')"); } } } } } function Get_Balance($user_id) { global $dbh; $Res=$dbh->query("select balance from users where user_id='$user_id'"); $Data=@mysql_fetch_array($Res); return $Data[0]; } function Auto_bid_dummy($item_id,$robot_id) { global $dbh,$total_robot; $Max_user=Get_Maxdummyuser($item_id); $Max_user_type=Get_user($Max_user,'user_type'); if($Max_user_type!='dummy' && $Max_user!='') { $sql="select user_id from users where user_type='dummy' and user_id='$robot_id' and deleted='N' and status='Y' order by RAND() limit 0,$total_robot"; $sqlResult=$dbh->query($sql); $data=mysql_fetch_object($sqlResult); return $data->user_id; } else return 0; } function Get_Maxdummyuser($item_id) { global $dbh; $Qry="select user_id from add_bids where item_id='$item_id' order by id desc limit 0,1"; $Res=$dbh->query($Qry); $Data=@mysql_fetch_object($Res); return $Data->user_id; } function Get_Highest_Bidder($item_id) { global $dbh; $Qry="select user_id from add_bids where item_id='$item_id' order by id desc limit 0,1"; $Res=$dbh->query($Qry); $Data=@mysql_fetch_object($Res); return $Data->user_id; } function Get_user($user_id,$field) { global $dbh; $Res=$dbh->query("select $field from users where user_id='$user_id'"); $Data=@mysql_fetch_array($Res); return $Data[0]; } function Get_Auction_Mail($user_id) { global $dbh; $Res=$dbh->query("select auction_bid from my_setting where user_id='$user_id'"); $Data=@mysql_fetch_array($Res); return $Data[0]; } function Get_Block_User($user_id) { global $dbh; $current=date('Y-m-d', $CURRENT_TIME); $current1=revdate_new1($current); $Res=$dbh->query("select * from core_block_by_member where member_id='$user_id' and block_until_datetime>='".$current1."'"); return @mysql_num_rows($Res); } function revdate_new1($date) { $date1=explode("-",$date); $currdate=$date1[2].'-'.$date1[1].'-'.$date1[0]; return $currdate; } function Email_info($id) { global $dbh; $Res=$dbh->query("select subject,message from email where id='$id'"); $Data=@mysql_fetch_array($Res); return $Data; } //============================ GET Timestamp===================================== function get_com_timestamp($time, $date) { $yy=substr($date, 0, 4); $mm=substr($date, 5, 2); $dd=substr($date, 8, 2); $hh=substr($time, 0, 2); $mm1=substr($time, 3, 2); $ss=substr($time, 6, 2); $timestamp=mktime($hh,$mm1,$ss,$mm,$dd,$yy); return $timestamp; } ?>
Andre
- cronjob problemen
-
04-05-2009, 21:04 #1
- Berichten
- 17
- Lid sinds
- 16 Jaar
cronjob problemen
-
-
05-05-2009, 08:55 #2
- Berichten
- 43
- Lid sinds
- 16 Jaar
Probeer eerst eens te kijken hoe lang het duurd voordat het script uitgevoerd is. Het hoeft niet perse aan de cronjob te liggen. Ik zou wel een aantal dingen anders aanpakken in ieder geval (objecten maken in ieder geval)
-
06-05-2009, 00:59 #3
- Berichten
- 17
- Lid sinds
- 16 Jaar
Hallo ,
Bedankt voor je reactie..
weet je misschien hoe ik dat doe?
gr,
Andre
-
06-05-2009, 07:43 #4
- Berichten
- 587
- Lid sinds
- 16 Jaar
Hoe vaak wordt deze cronjob uitgevoerd op je server?
(Welke regelmaat?)
En wat zijn gemiddeld het aantal getroffen rijen?
-
06-05-2009, 08:08 #5
- Berichten
- 43
- Lid sinds
- 16 Jaar
Ja, je meet gewoon de executie tijd van het script en van de queries.
Zo krijg je een overzicht van 1. Hoe lang doet het script er daadwerkelijk over 2.Hoe lang doet elke querie erover. Maak een simpele class waarmee je een email kunt sturen en stuur je zelf bijvoorbeeld afhankelijk van hoe vaak het script wordt uitgevoerd een email met alle data. Reken een gemiddelde uit en dan kun je zo zien waar je bottleneck zit.
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic