Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations derfloh on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Running php script through cron job

Status
Not open for further replies.

tewari68

Programmer
Jan 25, 2005
87
US
Hi,
I have written a php routine which parses a xml file and put the data in the database. Right now the xml file name is hardcoded into the php script.
However now I need to automate that script so that the script goes into a certain folder looks for .xml files and then parses them one by one and does the database entry.
The script needs to be run every hour.
I am not sure how to accomplish this, i.e. pass file names to the existing php script for parsing the xml files.
Appreciate any help in this regards.

Thanks,
Tewari
 
Regarding the reading of files, you can use the [blue]glob()[/blue] funtion to get all xml files, and then parse them. into the DB.

Just stick the filename into an array, and cycle through each filename opening, reading,inputting into Db, closing. and repeat.


----------------------------------
Ignorance is not necessarily Bliss, case in point:
Unknown has caused an Unknown Error on Unknown and must be shutdown to prevent damage to Unknown.
 
After processing, you'll probably want to move them to an archive area so they don't get 'reprocessed' the next hour.
 
Sorry if I didn't understand the question but here is how I did in order to run PHP scripts with CRON :

1) Install the CGI version of PHP
2) Create a link that CRON has the permission to call
( example : ln /usr/local/bin/php /etc/smrsh/php )
3) Then add your CRON jobs :
*/5 * * * * /etc/smrsh/php -q /usr/local/bin/my_script.php
*/5 0-23 * * * /etc/smrsh/php -q /var/ > /dev/null
 
Hi,
I have written this code so far however I am not able to get the right sql queries .
Each xml file will have one order id and several images associated with that orderid and there maybe several such xml files. Now for each orderid I have to insert the order id and imagenames into the database.
HERE IS MY CODE.
Code:
<?php
include("/home/caskie/[URL unfurl="true"]www/demos/laserlight/includes/global_vars.php");[/URL]
require_once("/home/caskie/[URL unfurl="true"]www/demos/laserlight/includes/cls_db.php");[/URL]
$db=new db(_DB_HOST_,_DB_NAME_,_DB_USER_NAME_,_DB_USER_PASSWORD_,true);
                $db->db_connect();
                $db->db_select_db();

$newDirectory = "/home/caskie/[URL unfurl="true"]www/demos/laserlight/samples/php/photo/";[/URL]

$xml_orderid_key = "*ORDER*ORDERID";
$xml_ordernumber_key = "*ORDER*ORDERNUMBER";
$xml_custname_key = "*ORDER*CUSTOMER*NAME";
$xml_qty_key = "*ORDER*ITEMS*ITEM*QUANTITY";
$xml_img_key = "*ORDER*ITEMS*ITEM*IMAGES*IMAGE*NAME";
$xml_retailsku_key = "*ORDER*ITEMS*ITEM*PRODUCT*RETAILSKU";
$xml_coaddress1_key = "*ORDER*SHIPTOADDRESS*LINE1";
$xml_coaddress2_key = "*ORDER*SHIPTOADDRESS*LINE2";
$xml_cocity_key = "*ORDER*SHIPTOADDRESS*CITY";
$xml_costate_key = "*ORDER*SHIPTOADDRESS*STATE";
$xml_cozipcode_key = "*ORDER*SHIPTOADDRESS*ZIPCODE";
 

$story_array = array();

$counter = 0;
class xml_story{
    var $orderid, $ordernumber, $custname, $qty, $imgname, $retailsku, $coaddress1, $coaddress2, $cocity, $costate, $cozipcode;
}

function startTag($parser, $data){
    global $current_tag;
    $current_tag .= "*$data";
    //echo "<BR>Start Tag = " . $current_tag."<BR>"; 
}

function endTag($parser, $data){
    global $current_tag;
    $tag_key = strrpos($current_tag, '*');
    $current_tag = substr($current_tag, 0, $tag_key);
	//echo "<BR>End Tag =" . $current_tag."<BR>";
}

function contents($parser, $data){
    global $current_tag, $xml_orderid_key, $xml_ordernumber_key, $xml_custname_key, $xml_qty_key, $xml_img_key, $xml_retailsku_key, $xml_coaddress1_key, $xml_coaddress2_key, $xml_cocity_key, $xml_costate_key, $xml_cozipcode_key, $counter, $story_array;

    switch($current_tag){
        case $xml_orderid_key:
            $story_array[$counter] = new xml_story();
            $story_array[$counter]->ORDERID = $data;
			break;
        case $xml_ordernumber_key:
            $story_array[$counter]->ORDERNUMBER = $data;
             break;
        case $xml_custname_key:
		   $story_array[$counter]->NAME = $data;
	       break;
        case $xml_qty_key:
		    $story_array[$counter]->QUANTITY = $data;
	        break;
        case $xml_cozipcode_key:
		     $story_array[$counter]->ZIPCODE = $data;
	          break;
        case $xml_retailsku_key:
		    $story_array[$counter]->RETAILSKU = $data;
	        break;
        case $xml_coaddress1_key:
		    $story_array[$counter]->LINE1 = $data;
	        break;
	    case $xml_coaddress2_key:
		    $story_array[$counter]->LINE2 = $data;
	        break;
        case $xml_cocity_key:
		    $story_array[$counter]->CITY = $data;
	        break;
        case $xml_costate_key:
		    $story_array[$counter]->STATE = $data;
	        break;
        case $xml_img_key:
		    $story_array[$counter]->NAME = $data;
		    $counter++; 
	        break;
    }
}
foreach (glob('*.xml') as $filename)
{
	//unset($data);
	$xml_parser = xml_parser_create();

	xml_set_element_handler($xml_parser, "startTag", "endTag");

	xml_set_character_data_handler($xml_parser, "contents");

	$fp = fopen($filename, "r") or die("Could not open file");

	$data = fread($fp, filesize($filename)) or die("Could not read file");


	if(!(xml_parse($xml_parser, $data, feof($fp))))
		{
			die("Error on line " . xml_get_current_line_number($xml_parser));

			
     	}

xml_parser_free($xml_parser);
	fclose($fp);
	//echo "<BR>File Opened = ".$filename."<BR>".$data."<BR>";
	$newfile = str_replace("xml", "ack", $filename);
	$cmd = "mv ".$filename." ".$newfile;
	//echo "Command to be executed". $cmd;
	system($cmd);
}
?>

	<html>
	<head>
	<title>Parsed Order Details </title>
	</head>
	<body bgcolor="#FFFFFF">
	<?php
		//echo "Start Before";
		//for($l=0;$l<count($Image_Name);$l++)
		//		echo "<BR>".$Image_Name[$l]."<BR>";
       //echo "End Before<hr><BR>";
	   
		unset($Image_Name);
	    //unset($Order_ID);
		unset($Order_Number);
		unset($Customer_Name);
		unset($Quantity);
		unset($RetailSku);
		unset($Company_Addr1);
		unset($Company_Addr2);
		unset($Company_City);
		unset($Company_Zipcode);
			//echo "Image = " . $Image_Name[0];
		for($x=0;$x<count($story_array);$x++)
			{
				if($story_array[$x]->ORDERID != '')
				$Order_ID[] = $story_array[$x]->ORDERID;
				$Order_Number[]=$story_array[$x]->ORDERNUMBER;
				$Customer_Name[] =$story_array[$x]->NAME;
				$Quantity[] = $story_array[$x]->QUANTITY;
				$Image_Name[] = $story_array[$x]->NAME;
				$RetailSku[] = $story_array[$x]->RETAILSKU;
				$Company_Addr1[] = $story_array[$x]->LINE1;
				$Company_Addr2[] = $story_array[$x]->LINE2;
				$Company_City[] = $story_array[$x]->CITY;
				$Company_State[] = $story_array[$x]->STATE;
				$Company_Zipcode[] = $story_array[$x]->ZIPCODE;
	
			}
			//echo "<br>Start after";
			//for($l=0;$l<count($Image_Name);$l++)
	//{
				
	//			echo "<BR>".$Image_Name[$l]."<BR>";
	//			
	//}
	//echo "End after<br>";
	for($j=0;$j< count($Image_Name); $j++)
	{
		if($RetailSku[$j] == 'laso2rdpers')
		$Color = "Red";
		elseif($RetailSku[$j] == 'laso2rdperss')
		{
			$Color = "Red Sample";
			$special_inst = "SAMPLE ORDER";
		}
		elseif($RetailSku[$j] == 'laso2gdpers')
			$Color = "Gold";
		elseif($RetailSku[$j] == 'laso2gdperss')
		{
			$Color = "Gold Sample";
			$special_inst = "SAMPLE ORDER";
		}
	$sql = "insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('".$Order_ID[0]."', '". $Image_Name[$j]."', 'Photo_Images', '".$Quantity[$j]."', '".$Color."', '3 1/4', '".$special_inst."', '')";
	   echo "<BR>".$sql."<BR>";
	//unset($story_array);  
	$movefiles =  "mv ".$Image_Name[$j]." ".$newDirectory;
	$newfile = str_replace("xml", "ack", $filename);
	$cmd = "mv ".$filename." ".$newfile;
	//echo "Command to be executed". $cmd;
	//system($cmd);
	//unset($Image_Name);

	}//End for loop
unset ($data);
//unset($Image_Name);
?>


</body>
</html>
<?
//}//end foreach loop
//unset($Image_Name)
?>

RESULTS from my code
Code:
insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('13238905', 'USW071906-25.13238905.jpg', 'Photo_Images', '1', '', '3 1/4', '', '')

insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('13238905', 'USW071906-26.13238905.jpg', 'Photo_Images', '1', '', '3 1/4', '', '')

insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('13238905', 'USW071906-27.13238905.jpg', 'Photo_Images', '1', '', '3 1/4', '', '')

insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('13238905', 'USW071906-28.13238905.jpg', 'Photo_Images', '1', '', '3 1/4', '', '')

insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('13238905', 'USW071906-29.13238905.jpg', 'Photo_Images', '1', '', '3 1/4', '', '')

insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('13238905', 'WAL-2345-7665544323-04112003-01.jpg', 'Photo_Images', '1', '', '3 1/4', '', '')

insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('13238905', 'WAL-2345-7665544323-04112003-01.jpg', 'Photo_Images', '', '', '3 1/4', '', '')

insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('13238905', 'WAL-2345-7665544323-04112003-02.jpg', 'Photo_Images', '1', '', '3 1/4', '', '')

insert into tbl_cart (order_id, final_image, prod_type, Quantity, Color, Size, special_instructions, cust_id) values('13238905', 'WAL-2345-7665544323-04112003-01.jpg', 'Photo_Images', '', '', '3 1/4', '', '')
whereas I want the following results
Code:
for each orderid in each of the files insert the orderid and all the image names into the database
the xml files I am using are
Code:
<order>
		<version>2.1</version>
		<asnrequired>yes</asnrequired>
		<orderid>WAL-2222-2222-222222</orderid>
		<ordernumber>12345678987</ordernumber>
		<envelopenumber>456789</envelopenumber>
		<ordertype>Photo Gifts</ordertype>
		<entrydate>3/3/2004</entrydate>
		<orderdate>3/3/2004</orderdate>
		<printsreceived>Y</printsreceived>
		<expedite>0</expedite>
		<orderprice>42.00</orderprice>
		<redo>
			<originalorderId></originalorderId>
			<responsibility></responsibility>
			<notes></notes>	
		</redo>
		<customer>
			<name>Smith</name>
			<phone>555-555-5555</phone>
		</customer>
		<shipping>
			<carrier>Airborne</carrier>
			<carrierid>12</carrierid>
			<method>2 Day</method>
			<methodid>34</methodid>
		</shipping>
		<retailer>
			<retailerid>WAL</retailerid>		
			<retailername>Walgreens</retailername>
		</retailer>
		<store>
			<storeid>8765</storeid>
			<storename>Wilsons Super Store</storename>
		</store>
		<timestamp>11/23/03 11:31:03</timestamp>
		<duedate>12/11/2003</duedate>
		<fromaddress>
			<line1>PhotoTLC, Inc</line1>
			<line2>100 Tamal Plaza Suite 250</line2>
			<line3></line3>
			<city>Corte Madera</city>
			<county></county>
			<province></province>
			<state>CA</state>
			<zipcode>94925</zipcode>
			<country>US</country>
			<phone>555-555-5555</phone>
		</fromaddress>
		<toaddress>
			<line1>Walgreens ? Photo Dept</line1>
			<line2>Store No. 167</line2>
			<line3>Luna St  Carro St</line3>
			<city>San German</city>
			<county></county>
			<province></province>
			<state>PR</state>
			<zipcode>06823</zipcode>
			<country>US</country>
			<phone>555-555-5555</phone>
		</toaddress>
		<shiptoaddress>
			<line1>12 Mall Drive</line1>
			<line2></line2>
			<line3></line3>
			<city>Millway</city>
			<county></county>
			<province></province>
			<state>MI</state>
			<zipcode>44444</zipcode>
			<country>US</country>
					<phone>555-555-5555</phone>
		</shiptoaddress>
		<region>12</region>
		<mailroom>222</mailroom>	
		<itemcount>1</itemcount>
		<items>
			<item>
				<itemsequence>1</itemsequence>
				<product>
					<description>Large dual print T-Shirt w/Text</description>
					<retailsku>P675656</retailsku>
					<fulfillmentsku>333444555</fulfillmentsku>
					<wholesaleprice>17.99</wholesaleprice>
					<retailprice>29.95</retailprice>
				</product>
				<discount>
					<reason>$5 off coupon</reason>
					<amount>5</amount>
				</discount>
				<quantity>1</quantity>
				<comment></comment>
				<imagecount>2</imagecount>
				<images>
					<image>
						<description>front image</description>
						<name>WAL-2345-7665544323-04112003-01.jpg</name>
						<url></url>
					</image>
					<image>
						<description>back image</description>
						<name>WAL-2345-7665544323-04112003-01.jpg</name>
						<url></url>
					</image>
				</images>
				<itemattributecount>2</itemattributecount>
				<itemattributes>
					<itemattribute>
						<name>FrontText</name>
						<value>Hello</value>
					</itemattribute>
					<itemattribute>
						<name>BackText</name>
						<value>Goodbye</value>
					</itemattribute>
				</itemattributes>
			</item>
		</items>
</order>
Code:
<order>
  <version>2.1</version>
  <asnrequired>no</asnrequired>
  <orderid>13238905</orderid>
  <ordernumber>13238905</ordernumber>
  <envelopenumber>071906</envelopenumber>
  <ordertype>Photo Gifts</ordertype>
  <entrydate>07/19/2006</entrydate>
  <orderdate>07/19/2006</orderdate>
  <printsreceived>N</printsreceived>
  <expedite>0</expedite>
  <orderprice>0.00</orderprice>
  <redo>
    <originalorderId></originalorderId>
    <responsibility></responsibility>
    <notes></notes>
  </redo>
  <customer>
    <name>walgreens samples</name>
    <phone>315-704-0290</phone>
  </customer>
  <shipping>
    <carrier></carrier>
    <carrierid></carrierid>
    <method></method>
    <methodid></methodid>
  </shipping>
  <retailer>
    <retailerid>USW</retailerid>
    <retailername>Walgreens</retailername>
  </retailer>
  <store>
    <storeid>10157</storeid>
    <storename>Walgreens</storename>
  </store>
  <timestamp>07/25/2006 17:02:03</timestamp>
  <duedate>08/04/2006</duedate>
  <fromaddress>
    <line1>PhotoTLC, Inc.</line1>
    <line2>3925 Cypress Drive </line2>
    <line3></line3>
    <city>Petaluma</city>
    <county></county>
    <province></province>
    <state>CA</state>
    <zipcode>94954</zipcode>
    <country>US</country>
    <phone>1-888-898-1901</phone>
  </fromaddress>
  <toaddress>
    <line1>WALGREENS - PHOTO DEPT</line1>
    <line2>Store No. 10157</line2>
    <line3>150 Grant Ave </line3>
    <city>Auburn</city>
    <county></county>
    <province></province>
    <state>NY</state>
    <zipcode>13021</zipcode>
    <country>US</country>
    <phone>315-704-0290</phone>
  </toaddress>
  <shiptoaddress>
    <line1>WALGREENS - PHOTO DEPT</line1>
    <line2>Store No. 10157</line2>
    <line3>150 Grant Ave </line3>
    <city>Auburn</city>
    <county></county>
    <province></province>
    <state>NY</state>
    <zipcode>13021</zipcode>
    <country>US</country>
    <phone>315-704-0290</phone>
  </shiptoaddress>
  <region></region>
  <mailroom></mailroom>
  <itemcount>5</itemcount>
  <items>
    <item>
      <itemsequence>11</itemsequence>
      <product>
        <description>*Clock 12&quot; Sports MLB sample</description>
        <retailsku>NWS73000536</retailsku>
        <fulfillmentsku>4315</fulfillmentsku>
        <wholesaleprice>14.0000</wholesaleprice>
        <retailprice>0.0000</retailprice>
      </product>
      <discount>
        <reason></reason>
        <amount></amount>
      </discount>
      <quantity>1</quantity>
      <comment></comment>
      <imagecount>1</imagecount>
      <images>
        <image>
         <description></description>
         <name>USW071906-25.13238905.jpg</name>
         <url>[URL unfurl="true"]http://images.phototlc.net/gifts/05/USW071906-25.13238905.jpg</url>[/URL]
        </image>
      </images>
      <itemattributecount>1</itemattributecount>
      <itemattributes>
        <itemattribute>
          <name>Baseball Team</name>
          <value>FLORIDA MARLINS|14-31</value>
        </itemattribute>
      </itemattributes>
    </item>
    <item>
      <itemsequence>12</itemsequence>
      <product>
        <description>*Mousepad Sports NFL Sample</description>
        <retailsku>NWS80000544</retailsku>
        <fulfillmentsku>5620</fulfillmentsku>
        <wholesaleprice>5.8000</wholesaleprice>
        <retailprice>0.0000</retailprice>
      </product>
      <discount>
        <reason></reason>
        <amount></amount>
      </discount>
      <quantity>1</quantity>
      <comment></comment>
      <imagecount>1</imagecount>
      <images>
        <image>
         <description></description>
         <name>USW071906-26.13238905.jpg</name>
         <url>[URL unfurl="true"]http://images.phototlc.net/gifts/05/USW071906-26.13238905.jpg</url>[/URL]
        </image>
      </images>
      <itemattributecount>1</itemattributecount>
      <itemattributes>
        <itemattribute>
          <name>Football Team</name>
          <value>PHIL EAGLES|10-51</value>
        </itemattribute>
      </itemattributes>
    </item>
    <item>
      <itemsequence>13</itemsequence>
      <product>
        <description>*Mug 11oz. White Sports MLB Sample</description>
        <retailsku>NWS81000545</retailsku>
        <fulfillmentsku>2571</fulfillmentsku>
        <wholesaleprice>6.8000</wholesaleprice>
        <retailprice>0.0000</retailprice>
      </product>
      <discount>
        <reason></reason>
        <amount></amount>
      </discount>
      <quantity>1</quantity>
      <comment></comment>
      <imagecount>1</imagecount>
      <images>
        <image>
         <description></description>
         <name>USW071906-27.13238905.jpg</name>
         <url>[URL unfurl="true"]http://images.phototlc.net/gifts/05/USW071906-27.13238905.jpg</url>[/URL]
        </image>
      </images>
      <itemattributecount>1</itemattributecount>
      <itemattributes>
        <itemattribute>
          <name>Baseball Team</name>
          <value>MINNESOTA TWINS|14-41</value>
        </itemattribute>
      </itemattributes>
    </item>
    <item>
      <itemsequence>14</itemsequence>
      <product>
        <description>*Stein 16 oz Sports NFL, sample</description>
        <retailsku>NWS88000556</retailsku>
        <fulfillmentsku>5546</fulfillmentsku>
        <wholesaleprice>8.8000</wholesaleprice>
        <retailprice>0.0000</retailprice>
      </product>
      <discount>
        <reason></reason>
        <amount></amount>
      </discount>
      <quantity>1</quantity>
      <comment></comment>
      <imagecount>1</imagecount>
      <images>
        <image>
         <description></description>
         <name>USW071906-28.13238905.jpg</name>
         <url>[URL unfurl="true"]http://images.phototlc.net/gifts/05/USW071906-28.13238905.jpg</url>[/URL]
        </image>
      </images>
      <itemattributecount>1</itemattributecount>
      <itemattributes>
        <itemattribute>
          <name>Football Team</name>
          <value>SD CHARGERS|10-57</value>
        </itemattribute>
      </itemattributes>
    </item>
    <item>
      <itemsequence>15</itemsequence>
      <product>
        <description>*Tumbler 16 oz Slimline Sports MLB Sample</description>
        <retailsku>NWS89000560</retailsku>
        <fulfillmentsku>5544</fulfillmentsku>
        <wholesaleprice>8.0000</wholesaleprice>
        <retailprice>0.0000</retailprice>
      </product>
      <discount>
        <reason></reason>
        <amount></amount>
      </discount>
      <quantity>1</quantity>
      <comment></comment>
      <imagecount>1</imagecount>
      <images>
        <image>
         <description></description>
         <name>USW071906-29.13238905.jpg</name>
         <url>[URL unfurl="true"]http://images.phototlc.net/gifts/05/USW071906-29.13238905.jpg</url>[/URL]
        </image>
      </images>
      <itemattributecount>1</itemattributecount>
      <itemattributes>
        <itemattribute>
          <name>Baseball Team</name>
          <value>ATLANTA BRAVES|14-11</value>
        </itemattribute>
      </itemattributes>
    </item>
  </items>
</order>
appreciate any help in this regards
Thanks,
tewari
 
Hi,
Can anybody help me with this.

Thanks,
Tewari
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top