• Глюк в скрипте отправки почты, отправляет по 200 раз всем подряд, почему?

    @viktorross Автор вопроса
    Одиночка Айс сейчас попробую несколькими комментариями, там в одном файле много кода просто
  • Глюк в скрипте отправки почты, отправляет по 200 раз всем подряд, почему?

    @viktorross Автор вопроса
    kulgan, уже появились ссылки на яндекс диск , я сначала забыл название ссылкам написать
  • Что за ошибка в smarty?

    @viktorross Автор вопроса
    A N, да все равно вылазит куча ошибок , мне скрипт переводили с старой версии php на более новую, в итоге теперь весь скрипт глюченный, то письмо для одного пользователя всем подряд по 100 штук отправится, то вообще некоторые функции не работают , то в шаблоне ошибки вылазят, сижу вот несколько дней ищу проблемы, думаю уже то что не работает просто заменить старыми скриптами с прошлой версией php и ошибки должны пропасть..
  • Почему скрипт долго думает при выборке?

    @viktorross Автор вопроса
    Иван Шумов, сейчас со службой поддержки связался , они сами посмотрели, с таблицей в бд все нормально сказали, но есть скрипт, который замедляет работу при выполнении первого варианта скрипта, который прислал в начале

    вот скрипт который тормозит работу

    $str_index = "";
    		if($this->use_index) $str_index = " use index ({$this->use_index}) ";
    
    		$sql = "select distinct ".TABLE_ADS.".*$mlang_vars, ".TABLE_ADS.".id as adid, date_format(".TABLE_ADS.".`date_added`,'$date_format') as date_nice, date_format(".TABLE_ADS.".`date_expires`,'$date_format') as date_expires_nice, UNIX_TIMESTAMP(".TABLE_ADS.".`date_added`) as `time_added`, (".TABLE_ADS.".date_expires < '$timestamp' and ".TABLE_ADS.".date_expires!='0000-00-00 00:00:00' and ".TABLE_ADS.".active=0) as expired
    		$str_slugs
    		$q_vars 
    		from ".TABLE_ADS." $str_index
    		$q_join $join_pictures $join_cat $join_users
    		$join_slugs
    		 ".$where.$where_slugs." ".$order_by." ".$order_way." ";
    		if($ads_per_page>0) $sql .= " limit ".$general_row.", ".$ads_per_page;
    //	echo $sql."<br/><br/>";
    		$arr = $db->fetchAssocList($sql);
    //_print_r($arr);
    		$i=0;
    		$result=array();
    		$pictures=new pictures();
    
    		if($is_mobile) {
    			global $mobile_settings;
    			$nopic = $mobile_settings['mobile_nopic'];
    			$medNopic = $mobile_settings['mobile_nopic'];
    		} else  {
    			$nopic=$ads_settings["nopic"];
    			$medNopic=$ads_settings["med_nopic"];
    		}


    а именно $sql запрос, конечно что в нем не так, я не понимаю, но по-моему в этой части

    ".TABLE_ADS.".id as adid,

    идет поиск id через индекс adid которого в этой таблице нет

    я правильно понимаю, или путаю что-то?
  • Почему скрипт долго думает при выборке?

    @viktorross Автор вопроса
    Иван Шумов, о какой отладке идет речь? индексы есть, смысла даже возиться с ними нет, так как это работало нормально с теми же запросами , после изменения некоторых частей кода появилась подобная проблема, тратить время на базу данных с которой все нормально смысла нет. Проблема не в этом. База данных работала год без изменений в структуре, после миграции скрипта на php 7 появились некоторые проблемы, большинство исправлено, осталась эта и еще несколько подобных.
  • Почему скрипт долго думает при выборке?

    @viktorross Автор вопроса
    Иван Шумов, это просто вызывает запрос секунд на 30 и ошибку 500
    $where="where explain ".TABLE_ADS.".active = 1".$where.$locations_str;
  • Почему скрипт долго думает при выборке?

    @viktorross Автор вопроса
    Lander подскажите пожалуйста как это сделать и где потом результат отобразится, я не совсем понял что нужно сделать

    куда добавить explain ? это код который долго грузится

    function getLatest($no_latest, $where = '') {
    
    		global $db, $settings;
    
    		$locations_str="";
    		if($settings['enable_locations'])
    			$locations_str = locations::makeQueryStr();
    
    		$where="where ".TABLE_ADS.".active = 1".$where.$locations_str;
    
    		$order_by_str="order by date_added desc";
    		$order_way='';
    		$start=0;
    		$ads_per_page=$no_latest;
    
    		$result=$this->getShortListings($where,$order_by_str,$order_way,$start,$ads_per_page);
    		return $result;
    	}
  • Что за ошибка в smarty?

    @viktorross Автор вопроса
    A N, спасибо большое , вроде бы сработало, но в этом файле есть еще одна строка с полем logo, теперь на нее показывает ошибку ту же самую

    {* logo *}
    	    {foreach $special_user_fields.logo as $logo}
    	    {capture name=pb assign=pb}pb_{$logo.caption}{/capture}
            {if (isset($listing.user[$logo]) && $listing.user[$logo])}
    	    <div class="mb10"><img style="object-fit:cover;width: 100px;height: 97px;border-radius: 50%;" src="{$live_site}/uploads/{$logo}/{$listing.user[$logo]}" /></div>
    	    {/if}
    	    {/foreach}
    
    здесь по другому немного код написан, как здесь сменить можно на is_array?
  • Почему скрипт долго думает при выборке?

    @viktorross Автор вопроса
    Lander, да, там на все поля есть индексы..
  • Почему скрипт долго думает при выборке?

    @viktorross Автор вопроса
    Иван Шумов в том-то и дело что индексы в бд есть..
  • Что за ошибка в smarty?

    @viktorross Автор вопроса
    A N, все равно тоже самое пишет

    я так делал
    {* logo *}
    	{foreach $special_listing_fields.logo as $logo}
    	{if (is_array($listing[$logo.caption]) && $listing[$logo.caption])}
    	<div class="mb10"><img src="{$live_site}/uploads/{$logo.caption}/{$listing[$logo.caption]}" /></div>
    	{/if}
    	{/foreach}
  • Что за ошибка в smarty?

    @viktorross Автор вопроса
    A N получается проблема в скрипте php?
  • Постоянное предупреждение после того как переделали скрипт, почему?

    @viktorross Автор вопроса
    Daria M

    вот он
    function getNoShortListings($where, $q_join='', $noloc = 0){
    
    		global $db, $settings;
    		$join_pictures = "";
    		$count = "*";
    
    		$locations_str="";
    		global $admin_side;
    		if(!$noloc && $settings['enable_locations'] && !isset($admin_side)) {
    			$locations_str = locations::makeQueryStr();
    			if(!$where) $locations_str = " where ".substr($locations_str, 4);
    		}
    
    		do_action("search_listing_query", array(&$where));
    		
    		// count(*) faster than count(val) **********
    		$sql = "select count($count) 
    		from ".TABLE_ADS."
    		$join_pictures $join_users $join_ext $join_options $join_pe
    		$q_join
    		".$where.$locations_str;
    		//echo $sql;
    		$no_ads = $db->fetchRow($sql);
    
    		return $no_ads;
    	}


    кстати говоря после getNoShortListings идет getShortListings

    function getShortListings($where, $order_by, $order_way, $general_row, $ads_per_page, $search='', $q_vars='', $q_join='', $join_cat='') { ....


    так вот в нем пропали эти переменные

    $join_ext = "";
            if (strstr($where, TABLE_ADS_EXTENSION)) {
                $join_ext = " left join " . TABLE_ADS_EXTENSION . " on " . TABLE_ADS . ".id = " . TABLE_ADS_EXTENSION . ".`id` ";
            }
            $join_options = "";
            if (strstr($where, TABLE_OPTIONS)) {
                $join_options = " left join " . TABLE_OPTIONS . " on " . TABLE_ADS . ".`id` = " . TABLE_OPTIONS . ".`object_id` and `option` like 'video' ";
            }
            $join_cat = "";
            if (strstr($where, TABLE_CATEGORIES)) {
                $join_users = "left join " . TABLE_CATEGORIES . "_lang on " . TABLE_ADS . ".category_id=" . TABLE_CATEGORIES . "_lang.id ";
            }
            $join_pe = "";
            if (strstr($where, TABLE_PENDING_EDITED)) {
                $join_pe = " left join " . TABLE_PENDING_EDITED . " on " . TABLE_ADS . ".id = " . TABLE_PENDING_EDITED . ".`ad_id` ";
            }


    есть только join_pictures и join_users

    $join_pictures = '';
    		if(strstr($where, TABLE_ADS_PICTURES)) 
    			$join_pictures = "inner join ".TABLE_ADS_PICTURES." on ".TABLE_ADS.".id=".TABLE_ADS_PICTURES.".ad_id ";
    
    		$join_users = '';
    		if(strstr($where, TABLE_USERS)) 
    			$join_users = "inner join ".TABLE_USERS." on ".TABLE_ADS.".user_id=".TABLE_USERS.".id ";


    при этом нигде вообще , ни в каких файлах больше не описываются join_ext, join_options, join_cat и join_pe

    я добавил их обратно после join_users и лог по по-прежнему указывает на то же самое предупреждение...
  • Ошибка в скрипте, почему главная страница грузится 15 секунд?

    @viktorross Автор вопроса
    Lander,
    в общем нашел проблемный кусок скрипта
    при отключении его страница загружается меньше 1 секунды, при включении около 20 секунд

    если сменить сортировку с date_added на последние записи по id(asc) то время ответа сокращается ровно в 2 раза

    function getLatest($no_latest, $where = '') {
    
    		global $db, $settings;
    
    		$locations_str="";
    		if($settings['enable_locations'])
    			$locations_str = locations::makeQueryStr();
    
    		$where="where ".TABLE_ADS.".active = 1".$where.$locations_str;
    
    		$order_by_str="order by date_added desc";
    		$order_way='';
    		$start=0;
    		$ads_per_page=$no_latest;
    
    		$result=$this->getShortListings($where,$order_by_str,$order_way,$start,$ads_per_page);
    		return $result;
    	}


    при этом вот этот скрипт делает почти тоже самое , но с ним такой проблемы не возникает

    function getFeatured($no_featured, $where = '') {
    
    		
    		global $db, $settings;
    
    		$locations_str="";
    		if($settings['enable_locations'])
    			$locations_str = locations::makeQueryStr();
    
    		$where="where ".TABLE_ADS.".featured>0 and ".TABLE_ADS.".active = 1".$where.$locations_str;
    
    		// solution to avoid order by rand() 
    
    		$total_featured = $db->fetchRow("select count(*) from ".TABLE_ADS." ".$where);
    
    		if($total_featured<=$no_featured) {
    
    			$result=$this->getShortListings($where,"","",0,0);
    			shuffle ( $result );
    			return $result;
    
    		}
    
    		// more than $no_featured results
    		$t = $total_featured - $no_featured;
    		$start = rand(0,$t);
    
    		$result=$this->getShortListings($where,"","",$start,$no_featured);
    		return $result;
    
    	}
  • Ошибка в скрипте, почему главная страница грузится 15 секунд?

    @viktorross Автор вопроса
    Lander, а нет, вот они

    Имя индекса
    PRIMARY
    idx_ad
    idx_order

    тип
    BTREE
    BTREE
    BTREE

    уникальный
    да
    нет
    нет

    упакован
    нет
    нет
    нет

    столбец
    id
    ad_id
    order_id

    уникальных элементов
    98987
    98987
    15

    сравнение
    a
    a
    a

    null
    нет
    нет
    нет
  • Ошибка в скрипте, почему главная страница грузится 15 секунд?

    @viktorross Автор вопроса
    Lander, там почему-то нет ничего, просто навигация и все
  • Ошибка в скрипте, почему главная страница грузится 15 секунд?

    @viktorross Автор вопроса
    Lander, против часовой стрелки, потом за секунду открывается полностью страница..
  • Ошибка в скрипте, почему главная страница грузится 15 секунд?

    @viktorross Автор вопроса
    Lander посмотрите пожалуйста, вот запрос

    select distinct class_ads.*, class_ads.id as adid, date_format(class_ads.`date_added`,'%d.%m \320\262 %H:%i') as date_nice, date_format(class_ads.`date_expires`,'%d.%m \320\262 %H:%i') as date_expires_nice, UNIX_TIMESTAMP(class_ads.`date_added`) as `time_added`, (class_ads.date_expires < '2019-08-01 11:12:49' and class_ads.date_expires!='0000-00-00 00:00:00' and class_ads.active=0) as expired, class_slugs.slug from class_ads inner join class_slugs on class_ads.id=class_slugs.object_id where class_ads.active = 1 and class_slugs.`type`='listing' order by `viewed` desc limit 0, 6

    вот структура бд
    имя тип Кодировка NULL По умолчанию
    id int(10) Нет Нет AUTO_INCREMENT
    ad_id int(11) Нет Нет
    picture varchar(128) utf8_general_ci Нет Нет
    folder varchar(20) utf8_general_ci Да NULL
    order_no int(2) Нет 1
  • Не работает вход по email, хотя в скрипте это предусмотрено, в чем проблема?

    @viktorross Автор вопроса
    FanatPHP, блин, Вы правы оказались, я 2 месяца на это не обращал внимания, в итоге после того как убрал это заработал логин и email.. Спасибо большое) это самое быстрое решения )
  • Не работает вход по email, хотя в скрипте это предусмотрено, в чем проблема?

    @viktorross Автор вопроса
    FanatPHP, я пробовал заменить на enable_email - не работает, но все же по идее вход должен быть и по логину и по email .. не пойму что сделать с этим