Is they any way you could combine the UPDATE queries?

I suspect not, but those are the ones that are probably what will get
worse and worse over time as the file/db grows.

All the left outer joins are not gonna help either, but that's only a few
hundred rows, right?...  But will it grow?

Finally, if "nice -19" isn't supported on Windows (I suspect not) a simple
"sleep" call (see below) could give the rest of the system a chance to do
useful work.

On Thu, June 16, 2005 3:28 am, Gustav Wiberg said:
> <?php
> //This script was updated 2005-06-16
> //by Gustav Wiberg / [EMAIL PROTECTED]
> //Please visit www.varupiraten.se
> //
> require("phpfunctions/dbsafety.php");
>
> //Parameters that sets the rules for importing
> //
> static $fileName = "import/GNTprisfil.txt";
> static $logFileName = "logfiles/gnt.txt";
> static $limitSteps = 25;
> static $saldoColumn = 6;
> static $artNrColumn = 2;
> static $priceColumn = 5;
> static $row = 1;
> static $updateActions = 0;
> static $deleteActions = 0;
> static $checkLev = "gn-";
>
> //Function for creating a logfile
> //and writing to screen
> //
> function writeNow($str, $logFileName) {
>
> //Create a handle for writing (appending)
> //
> $logHandle = fopen($logFileName,"a");
>
>   fwrite($logHandle, "$str\r\n");
>   echo $str . "<br>";
>
> //Close file for writing to logfile
> //
> fclose($logHandle);
>
> }
> //Set limitstart for first time
> //
> if (!isset($limitStart)) {$limitStart = 0;}
>
> if (isset($_REQUEST["updateActions"])) {$updateActions =
> $_REQUEST["updateActions"];}
> if (isset($_REQUEST["deleteActions"])) {$deleteActions =
> $_REQUEST["deleteActions"];}
> if (isset($_REQUEST["startTime"])) {$startTime = $_REQUEST["startTime"];}
>
> if ($_REQUEST["limitstart"]) {
>   $limitStart = $_REQUEST["limitstart"];
> }
>
>
> require ("phpfunctions/opendb.php");
>
>
>     $sql = "SELECT COUNT(IDVara) cn FROM tbvara WHERE Varunamn LIKE
> '$checkLev%'";
>     $querys = mysql_query($sql);
>
>     //Count products in db
>     //
>     if ($limitStart == 0) {
>
>       $dbArray = mysql_fetch_array($querys);
>       $nrOfProducts = $dbArray["cn"];
>       echo "Antal produkter: $nrOfProducts";
>
>     //Create logfile or delete all content from current logfile
>     //
>     $logHandle = fopen($logFileName,"wb");
>     fclose($logHandle);
>
>
>       //Get starttime of script
>       //
>       $startTime = time();
>     }
>
>     else {
>
>       $nrOfProducts = $_REQUEST["nrofproducts"];
>
>    }
>
>    if ($limitStart > $nrOfProducts) {
>      $nrSeconds = time() - $startTime;
>      $nrMinutes = $nrSeconds / 60;
>      ?>
>      <b>Klar</b> med uppdatering av saldo och ev. borttagningar för
> <b>GNT</b>.<br><br>
>      <b>Tid för uppdatering:</b> <?php echo $nrSeconds;?> sekunder eller
> <?php echo $nrMinutes;?> minuter<br><br>
>      <b>Antal uppdateringar:</b> <?php echo $updateActions;?><br>
>      <b>Antal produkter som ej visas efter uppdatering: </b> <?php echo
> $deleteActions;?><br>
>      <a
> href="captech_checksaldo_step2.php?deleteActions=0&updateActions=0">Kolla
> captech produkter</a>
>      <?php
>      exit;
>    }
>
>     //Check if the filename exists first!
>     //If not, then exit script
>
>     if (!file_exists($fileName)) {
>
>         echo "Filen $fileName finns inte!<br>Avslutar scriptet nu!";
>         exit;
>
>     }
>
>
>
>
>     //Go through database with products from GNT
>     //
>     $sql = "SELECT tbvara.IDVara, tbvara.Saldo, tbvara.startPris,
> tbvara.Varunamn, tbvara.synligVara, tbvara.lastPris,
> tbunderkategori.marginalProcent, tbunderkategori.Underkategori FROM
> tbvara";
>     $sql .= " LEFT JOIN tbunderkategorivara ON (tbvara.IDVara =
> tbunderkategorivara.ForIDVara)";
>     $sql .= " LEFT JOIN tbunderkategori ON
> (tbunderkategori.IDUnderKategori
> = tbunderkategorivara.ForIDUnderKategori)";
>     $sql .= " WHERE Varunamn LIKE '$checkLev%' AND
> tbunderkategori.marginalProcent>-1 AND tbunderkategori.Underkategori<>'Ej
> tilldelade' ORDER BY IDVara LIMIT $limitStart,$limitSteps";
>     //echo $sql;
>     //exit;
>     $querys = mysql_query($sql);
>
>     while ($toarray = mysql_fetch_array($querys)) {
>
>         //Get current row from db
>         //
>         $idproduct = $toarray["IDVara"];
>         $dbSaldo = $toarray["Saldo"];
>         $dbArtNr = $toarray["Varunamn"];
>         $dbPris = $toarray["startPris"];
>         $dbSynligVara = $toarray["synligVara"];
>         $dbLastPris = $toarray["lastPris"];
>         $dbMarginalProcent = $toarray["marginalProcent"];
>         $dbUnderKategori = $toarray["Underkategori"];
>
>         //Taken from table tbunderkategori
>         //
>         $marginalProcent = intval($dbMarginalProcent);
>
>             //Delete $checkLev from string $dbArtNr for the sake of
> comparing
>             //(take away the three first characters)
>             //
>             $dbArtNr = substr($dbArtNr, 3);
>
>
>             //Go through whole textfile and compare with current row in db
>             //
>             $handle = fopen($fileName, "r");
>
>
>
>             $foundProduct= false;
>             ob_start();
>
>             while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
>
>                $textSaldo = $data[$saldoColumn];
>                $textArtNr = $data[$artNrColumn];
>                $textPris = $data[$priceColumn];
>
>
>                 //Default marginal is 15 when marginal isn't set for
> undercategory
>                 //
>                 if (intval($marginalProcent) == 0) {
>
>                   $marginalProcent = 15;
>
>                 }
>
>                 //echo "Marginal för underkategori $dbUnderKategori är
> $marginalProcent%<br>";
>
>                 //Set price based on price from textfile + marginal set
>                 //for undercategory
>                 //
>                 $newPrice = $textPris + (($textPris *
> ($marginalProcent/100)));
>                 $newPrice = round($newPrice,0);
>
>
>                if (isset($textArtNr) AND isset($textSaldo) AND $row>1) {
>
>
>                     //If there is an occurence of article-nr for product
> in
> textfile
>                     //that matches the one in current row in database...
>                     //
>                     if ($textArtNr == $dbArtNr) {
>
>                       $foundProduct= true;
>
>                         //If saldo for product isn't the same for product
> in
> textfile,
>                         //OR price for product isn't' the same for product
> in textfile
>                         //THEN do something...
>                         //
>                         if (strtolower($textSaldo) != strtolower($dbSaldo)
> OR strtolower($newPrice) != strtolower($dbPris) OR $dbSynligVara == 'N') {
>
>
>                             $sql2 = "UPDATE tbvara";
>                             $sql2 .= " SET Saldo=" .
> safeQuote($textSaldo);
>
>                             //Update price only if newPrice is over zero
>                             //newPrice IS zero when marginalProcent is set
> to zero based on marginalProcent
>                             //from tbunderkategori
>                             //Price from vendor must also be higher than
> zero
>                             //If price is locked (lastPris), then don't
> update specific price
>                             //
>                             if ($dbLastPris == 'N') {
>
>                                 if (intval($newPrice) > 0 AND
> intval($textPris) > 0) {
>
>                                   $sql2 .= ", startPris=" .
> safeQuote($newPrice);
>
>                                 }
>
>                             }
>
>                             $sql2 .= ", synligVara=" . safeQuote('Y');
>                             $sql2 .= " WHERE IDVara=" .
> safeQuote($idproduct) . " LIMIT 1";
>                             $querys2 = mysql_query($sql2);
>                             $writeTo = "Produkt: $dbArtNr";
>                             writeNow($writeTo, $logFileName);
>
>                             $writeTo = "marginalpåslag i %:
> $marginalProcent
> (Underkategori: $dbUnderKategori)";
>                             writeNow($writeTo, $logFileName);
>
>                             if ($dbSaldo != $textSaldo) {
>                                 $writeTo = "Föregående saldo: $dbSaldo har
> ändrats till: $textSaldo";
>                                 writeNow($writeTo, $logFileName);
>                             }
>
>                             if ($dbPris != $newPrice) {
>                                 $writeTo = "Föregående pris = $dbPris har
> ändrats till: $newPrice";
>                                 writeNow($writeTo, $logFileName);
>                             }
>
>                             $writeTo = "Ändring fungerade bra:";
>                             writeNow($writeTo, $logFileName);
>
>                             $wrongSQL = mysql_error();
>
>                             //No errors when sql query was executed
>                             //
>                             if (strlen($wrongSQL)==0) {
>                                 $updateActions++;
>                                 $writeTo = "Ja";
>                                 writeNow($writeTo, $logFileName);
>
>                             }
>                             else {
>                               //Error when sql-query was executed
>                               //
>                                 $writeTo = "Nej - fel $wrongSQL";
>                                 writeNow($writeTo, $logFileName);
>                             }
>
>                             $writeTo =
> "-------------------------------------------------";
>                             writeNow($writeTo, $logFileName);
>
>
>
>                         }
>                         //echo "<b>YES</b>! $sql2";
>
>                       }
>
>                 }
>
>
>             $row++;
>

sleep(1); //Give the cpu a chance to do something else for a second.


>           }
>           //End of textfile
>         ob_flush();
>
>
>           fclose($handle);
>
>           if ($foundProduct == false AND $dbSynligVara == 'Y') {
>
>             $sql2 = "UPDATE tbvara SET synligVara=" . safeQuote('N') . "
> WHERE IDVara=" . safeQuote($idproduct) . " LIMIT 1";
>             //echo $sql2;
>             $querys2 = mysql_query($sql2);
>             $deleteActions++;
>
>           }
>
>
>         }
>         //END Go through database with products from GNT
>
>
>
>
>
>
> mysql_close();
> //Increase limitstart to begin after current limitSteps
> //
> $limitStart = $limitStart + $limitSteps + 1;
>
>
> ?>
> <script language="Javascript">
> window.location = 'gnt_checksaldo_step2.php?limitstart=<?php echo
> $limitStart;?>&nrofproducts=<?php echo
> $nrOfProducts;?>&deleteActions=<?php
> echo $deleteActions;?>&updateActions=<?php echo
> $updateActions;?>&startTime=<?php echo $startTime;?>';
> </script>
>
> --
> PHP General Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>


-- 
Like Music?
http://l-i-e.com/artists.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to