I will run a script to check if some trade-offers are accepted through steam's web API. I will run it using cronjob every 15th second. But I want it to be optimized and run as fast as possible, I feel like I have done this very poorly.
As you can see, I've put some comments that tells what the script is doing. But I will try here as well.
- It collects all the new trade-offers from the database
- It checks if the trade offer has been cancelled or not
- If it is not cancelled, aka accepted. Then it collects information about the offer.
- If the bot-inventory contains the item, that the player deposited. The database will set status = 1
- Then it will delete the trade-offer, as it has been completed
I feel like this script is running slowly, should I change to mysqli? or maybe replace mysql_fetch_array with assoc? What can I do to optimize this. It is pretty important that it runs fast, quicker than 15 seconds.
<?php
require('xxxxxx/xx.php');
//Getting bot-items
$jsonInventory = file_get_contents('https://steamcommunity.com/profiles/76561xxxxx8959977/inventory/json/730/2');
$data = json_decode($jsonInventory, true);
//Getting tradeoffers
$tradeoffers = mysql_query("SELECT * FROM tradeoffers");
while($trade = mysql_fetch_array($tradeoffers)) {
//Getting information about trade-offer
$url = file_get_contents("https://api.steampowered.com/IEconService/GetTradeOffer/v1/?key=3593xxxxxB6FFB8594D8561374154F7&tradeofferid=".$trade['tradeofferid']."&language=en_us");
$json = json_decode($url, true);
//Checking if trade has been completed
if (isset($json['response']) && isset($json['response']['offer'])) {
if($json['response']['offer']['trade_offer_state'] == 1 || $json['response']['offer']['trade_offer_state'] == 5 || $json['response']['offer']['trade_offer_state'] == 6 || $json['response']['offer']['trade_offer_state'] == 7 || $json['response']['offer']['trade_offer_state'] == 8 || $json['response']['offer']['trade_offer_state'] == 10 || $json['response']['offer']['trade_offer_state'] == 11) {
mysql_query("DELETE FROM tradeoffers WHERE tradeofferid = '".$trade['tradeofferid']."'");
mysql_query("DELETE FROM items WHERE tradeofferid = '".$trade['tradeofferid']."'");
}
if($json['response']['offer']['trade_offer_state'] == 3) {
if(isset($data['rgDescriptions'])) {
$itemsinfo = mysql_query("SELECT * FROM items WHERE tradeofferid = '".$trade['tradeofferid']."'");
while($item = mysql_fetch_array($itemsinfo)) {
foreach($data['rgInventory'] as $inv) {
$desc = $data['rgDescriptions'][ $inv['classid'] .'_'. $inv['instanceid'] ];
if($desc['icon_url'] == $item['iconurl']) {
mysql_query("UPDATE items SET assetid = '".$inv['id']."' WHERE iconurl = '".$item['iconurl']."'");
mysql_query("UPDATE items SET status = 1 WHERE iconurl = '".$item['iconurl']."'");
}
}
}
}
//Deleting the trade-offer from the database.
mysql_query("DELETE FROM tradeoffers WHERE tradeofferid = '".$trade['tradeofferid']."'");
}
} else {
mysql_query("DELETE FROM tradeoffers WHERE tradeofferid = '".$trade['tradeofferid']."'");
mysql_query("DELETE FROM items WHERE tradeofferid = '".$trade['tradeofferid']."'");
}
}
echo 'Finished';
?>