Цитата(ElGuapo @ 24.10.2011, 22:13 ) | MySQL INSERT работает один раз и не имеет LIMIT'a. Если два раза добавилась запись, значит запрос mysql_query INSERT передан серверу дважды. Какие тут могут быть настройки хостинга?
Покажите, при каких условиях у вас выполняется приведенный выше запрос. Может, тогда прояснится. |
Вот полный код:
| Код | <?php set_time_limit(1800); require_once ( 'fnc/simple_html_dom.php'); require_once ( 'fnc/db_scrapper_fnc.php'); require_once ('fnc/thumb_fnc.php'); require_once ('../db/db_fns.php');
$brands = array(); $brands = getDbBrands(); //get list of brands for the search $date_array = array(); $empty_flag = 0; $main_url = 'some url';
$html = new simple_html_dom(); /*Main page analazer */ $html->load_file($main_url); $i =0; foreach ($html->find('div.tborder') as $main_content) { foreach ($main_content->find('span[id] a') as $topictitle) { if ($i != 1) { $title = $topictitle->plaintext; $link = $topictitle->href; $pos = strpos($link, '?'); $link = substr($link, 0, $pos); $flag = $topictitle->href; $pos = strpos($flag, '/topic,'); $flag = substr($flag, $pos + 7); $pos = strpos($flag, '.'); $flag = substr($flag, 0, $pos); // topic id foreach ($main_content->find('strong') as $nic) $nic_name = $nic->plaintext; $aduction_id = getAuctionId('some name'); /*Looking for brands in the forum topics*/ foreach ($brands as $brands_id => $brand_name) { if (stristr($topictitle->plaintext, $brand_name)) { if (!checkDbData($flag, $aduction_id) && !duplicateCheck($date_array, $flag)) {// check duplicate links and check if the flag and auktion id are in database ++$empty_flag; $date_array[$flag] = array('title'=>$title,'link'=>$link,'brands_id'=>$brands_id); } } } }$i++; } } $html->clear(); unset($html); /*ttpic data*/ if($empty_flag) { //if the listing doesen't have new links do nothing foreach($date_array as $key => $value) { $flag = $key; $title = $date_array[$key]['title']; $link = $date_array[$key]['link']; $brands_id = $date_array[$key]['brands_id']; $html = new simple_html_dom(); $html->load_file($main_url . htmlspecialchars_decode($link));//open topic's link $nick_name_array = array(); foreach ($html->find('h4 a') as $nick_name_str) { $nick_name_array[] = $nick_name_str->plaintext; } if(!empty($nick_name_array)) $nick_name = $nick_name_array[0]; else $nick_name = ''; $price_currency = array('$', '£', '€'); $images_array = array(); $counter = 0; foreach ($html->find('div.inner') as $content) { foreach ($content->find('img') as $img) { //echo $img->src.'<br>'; if(isset($img->src) && !stristr($img->src, '.gif') && !stristr($img->src, ' ') && !stristr($img->src, '%20')) { /*downloading and resize pictures */ if($counter < 5) { $image_name = imgCreateName(); $ch = curl_init(); $fp = fopen ('../'.$image_name, "w"); curl_setopt($ch, CURLOPT_URL, $img->src); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); curl_setopt ($ch, CURLOPT_FILE, $fp); curl_exec ($ch); curl_close ($ch); fclose ($fp); if(is_image('../'.$image_name)) { //if it's a picture resize it if ($counter == 0) imgResizer( '../'.$image_name, '../'.$image_name, 140, 140); else imgResizer( '../'.$image_name, '../'.$image_name, 60, 60); $images_array[$counter] = $image_name; ++$counter; } else { unlink('../'.$image_name); } } } } $price = ''; $currency = ''; $price_str = $content->plaintext; foreach ($price_currency as $key => $value) { if(stristr($price_str, $value)) { $pos = strpos($price_str, $value); $price = substr($price_str, $pos); $pos = strpos($price, ' '); $price = substr($price, 1, $pos); $price = str_replace(' ','',$price); $currency = $value; } } } $preferences = ''; $location =''; if (is_numeric($price) || !empty($images_array)) // insert to db only data that has a picture or doesn't have picture but has a prise value addMainDate($flag,$aduction_id,$title,$main_url.$link,$brands_id,$price,$currency,$nick_name,$location,$images_array,$preferences); $html->clear(); unset($html); } } ?>
|
| Код | function addMainDate($flag,$aduction_id,$title,$link,$brands_id,$price,$currency,$nick_name,$location,$images_array,$preferences) { $aduction_id = addslashes($aduction_id); $title = addslashes($title); $link = addslashes($link); $brands_id = addslashes($brands_id); $price = addslashes($price); $currency =addslashes($currency); $nick_name = addslashes($nick_name); $location = addslashes($location); $preferences = addslashes($preferences); $ddate = date("Y-m-d"); $conn = db_connect(); $result = mysql_query("INSERT INTO Dates SET date_title = '$title', date_price = '$price', date_curency = '$currency', date_location = '$location', date_link = '$link', date_flag = '$flag', date_nick = '$nick_name', auctions_id = '$aduction_id', brands_id = '$brands_id', date_pref = '$preferences', date_date = '$ddate' ",$conn); $id = mysql_result(mysql_query("SELECT LAST_INSERT_ID()", $conn), 0); if($id) { foreach($images_array as $key =>$im) { if($key == 0) { $result = mysql_query("INSERT DELAYED INTO Images SET date_id = '$id', images_big = '$im' ",$conn); } else { $result = mysql_query("INSERT DELAYED INTO Images SET date_id = '$id', images_small = '$im' ",$conn); } } } }
|
Проблема возникает только на этом носте и толко если больше 10-20 новых линков.
|