• Долгий запрос mysql, что не так?

    @viktorross Автор вопроса
    ThunderCat, получается что да, если смотреть на запрос
    SELECT class_ads. * , class_ads.id AS adid,
  • Долгий запрос mysql, что не так?

    @viktorross Автор вопроса
    ThunderCat, смотрите, я в этом запросе убрал distinct, теперь запрос занимает 0,003 сек
    какие последствия могут быть? визуально все работает..
    SELECT /*DISTINCT*/ class_ads . * , class_ads.id AS adid, DATE_FORMAT( class_ads.`date_added` ,  '%d.%m в %H:%i' ) AS date_nice, DATE_FORMAT( class_ads.`date_expires` ,  '%d.%m в %H:%i' ) AS date_expires_nice, UNIX_TIMESTAMP( class_ads.`date_added` ) AS  `time_added` , (
    class_ads.date_expires <  '2019-08-19 20:07:29'
    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  `priority` DESC , date_added DESC 
    LIMIT 0 , 12
  • Долгий запрос mysql, что не так?

    @viktorross Автор вопроса
    ThunderCat, без explain долго, вывел 12 строк, время почти 7.5 секунд.. я посмотрел то что там написано, у меня есть индексы в базе, а если добавить explain перед select в самом скрипте то база перестает работать , т.е ничего не выводится кроме ошибки подключения
  • Долгий запрос mysql, что не так?

    @viktorross Автор вопроса
    @nozzy
    надо получается этот кусок переделывать?

    $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);
  • Долгий запрос mysql, что не так?

    @viktorross Автор вопроса
    ThunderCat, спасибо большое, запрос сделал, результат за секунду был получен

    вот запрос

    EXPLAIN SELECT DISTINCT class_ads . * , class_ads.id AS adid, DATE_FORMAT( class_ads.`date_added` ,  '%d.%m в %H:%i' ) AS date_nice, DATE_FORMAT( class_ads.`date_expires` ,  '%d.%m в %H:%i' ) AS date_expires_nice, UNIX_TIMESTAMP( class_ads.`date_added` ) AS  `time_added` , (
    class_ads.date_expires <  '2019-08-19 20:07:29'
    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  `priority` DESC , date_added DESC 
    LIMIT 0 , 12


    Результат прикрепил на скриншоте
    5d5add172680c582674366.jpeg
  • Долгий запрос mysql, что не так?

    @viktorross Автор вопроса
    ThunderCat, уверен, я как-то даже писал в службу поддержки сервера чтобы они посмотрели что именно тормозит, они прислали этот запрос и указали время около 15 секунд, можете объяснить как сделать explain , через что именно? Я просто никогда не делал этого, может есть инструкция какая-то подробная
  • Долгий запрос mysql, что не так?

    @viktorross Автор вопроса
    ThunderCat, раньше не было таблицы class_slug и вообще этой функции( изменить адрес ссылки) после ее добавления началось
  • Долгий запрос mysql, что не так?

    @viktorross Автор вопроса
    ThunderCat, 140 тысяч записей в class_ads и class_slug столько же(это ссылки подставляются в нужном формате к каждой странице)

    Индексы есть , все что указаны в запросе точно есть, могу скриншот всех индексов сделать , может чего-то не хватает
  • Долгий запрос mysql, что не так?

    @viktorross Автор вопроса
    Евгений Самсонов, Вы не могли бы пожалуйста объяснить как это сделать подробнее, что за клиент и т.д я никогда не анализировал базу данных, просто создавал таблицы, и подключал их к скрипту, а сейчас возникла такая проблема и я не знаю что и как проверять
  • Долгий запрос mysql, что не так?

    @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;


    я добавил explain перед select, страница открылась мгновенно без данных естественно, просто шаблон, в лог ничего не записалось
  • Как выполнять js в зависимости от разрешения экрана?

    @viktorross Автор вопроса
    VegasChickiChicki спасибо большое, но я не совсем понял, вот допустим реклама яндекса, что бы она запускалась когда размер экрана меньше 600 надо сделать так

    <script type="text/javascript">
    if(window.innerWidth < 600){ /*если нужно чтобы блок показывался, когда больше 600, то >601? */
        (function(w, d, n, s, t) {
            w[n] = w[n] || [];
            w[n].push(function() {
                Ya.Context.AdvManager.render({
                    blockId: "R-A-355220-28",
                    renderTo: "yandex_rtb_R-A-355220-28",
                    async: true
                });
            });
            t = d.getElementsByTagName("script")[0];
            s = d.createElement("script");
            s.type = "text/javascript";
            s.src = "//an.yandex.ru/system/context.js";
            s.async = true;
            t.parentNode.insertBefore(s, t);
        })(this, this.document, "yandexContextAsyncCallbacks");
    }
    </script>


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

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

    @viktorross Автор вопроса
    Siverius, а как это сделать? если я сейчас запущу этот скрипт, он опять людям по 200 сообщений отправит..

    Я сравнил сейчас со старыми этими же методами, тут изменения только двойные кавычки на одинарные везде, и где-то апострофы добавлены, фактически все тоже самое..

    Может просто заменить на старый скрипт? просто как его потом проверить не могу понять, ведь если его запустить опять начнут отправляться сообщения
  • Глюк в скрипте отправки почты, отправляет по 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;