Задать вопрос
  • Could not execute script и ошибка 500?

    @Us59 Автор вопроса
    Роман Мирр, я все долблю хост, вот что они ответили мне:
    spoiler
    This email is in regards to your open ticket concerning the 500 error on your site. We have investigated the site and the cause of the errors and it looks to be the mysql script. It runs every minute calling the database and that creates what we call a "user connection" and you only can have 15 at a time running. The crons do not drop the connection so after 15 mins you already take up the connections so then when you try and go to the site you see the 500 error because there are no more connections available.

    We would recommend that you troubleshoot your cron so it doesn't run as frequent or its able to close the user connection after its done calling the database. Thank you for the opportunity to assist you today. There is a three question survey linked at the bottom of this email if you can let me know how I did - all feedback helps! If you have any further questions, please feel free to reply to this email and Ill be more than happy to lend a hand.


    Указывают на то, что я не закрываю соединение с БД, хотя я задавал этот вопрос на тостере и уважаемые "Эксперты" сказали, мол а зачем это вам делать? Ведь при завершении скрипта соединение само завершится.

    Я использую вот такой сценарий:
    spoiler
    function Connect () {
        include("config.php");
        $DB = new mysqli($DB_SERVER, $DB_USER, $DB_PASS, $DB_BASE);
        return $DB;
    }
    
    class Script {
    
    	private $DB;
    
        public function __construct($DB)
        {
            $this->DB = $DB;
        }
    
    
    	function MultiCurlRequest ($data)
    	{
    		$multi = curl_multi_init();
            $handles = [];
            $array = [];
    
            foreach ($data as $key)
            {
                $ch = curl_init();
                $url = "https://123.ru";
                curl_setopt($ch, CURLOPT_URL, $url);
                curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
                curl_setopt($ch, CURLOPT_TIMEOUT, 50);
    	    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 50);
    
                curl_multi_add_handle($multi, $ch);
    
                $handles[] = array(
                    'url'			=> $ch,
                    'Ip'			=> $key["Ip"],
                    'QtyVerifyTime' => $key["QtyVerifyTime"]
                );
            }
            $active = null;
            do {
                $mrc = curl_multi_exec($multi, $active);
            } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    
    
            while ($active && $mrc == CURLM_OK) {
                if (curl_multi_select($multi) == -1) {
                    usleep(10000);
                    // continue; 
                }
    
                do {
                    $mrc = curl_multi_exec($multi, $active);
                } while ($mrc == CURLM_CALL_MULTI_PERFORM);
    
            }
            foreach ($handles as $handle)
            {
                $result = curl_multi_getcontent($handle["url"]);
    
                $array[] = array(
                	'Ip' => $handle["Ip"],
                );
                curl_multi_remove_handle($multi, $handle["url"]);
            }
            curl_multi_close($multi);
    
    		return $array;
            }
    }
    $DB = Connect();
    $object = new Script($DB);
    $object->CheckList (); // старт идет тут.


    за 1 минуту в multi curl приходит на текущий момент не более 10 запросов по которым он должен сделать обращение и дождаться ответа, это делается через proxy и ответ иногда может быть долгим, до time out который установлен 50 секунд.

    Вызов ф-ции MultuCurlRequest идет из другой ф-ции (которая выполняет задачу выборки из БД и передает нужные данные в ф-цию)
    spoiler
    function CheckList ()
    	{
    		$LIMIT = 10;
    		$query = $this->DB->query("SELECT Ip, Port FROM sc_list WHERE Status = 0 ORDER BY Id DESC LIMIT " . $LIMIT . "");
    
    		if (!empty($query->num_rows)) {
    			$result = $this->MultuCurlRequest($query);
    		}
    
    		if (!empty($result)) {
    			foreach ($result as $value) {
    // обрабатываем результат который вернула ф-ция. (Запросы к БД)
    			}
    		}
    		return true;
    	}


    Может подскажите, где нужно закрывать соединение с БД?) Или может хостер опять наплетает?
  • Could not execute script и ошибка 500?

    @Us59 Автор вопроса
    Роман Мирр, я не знаю где этот файл Application.cpp:630: - это не часть моего скрипта)
  • Как настроить Cron через 10 секунд после предыдущего CRON?

    @Us59 Автор вопроса
    Я должен прописать эту вещь при добавлении одной командой? проверил, не работает что-то второй скрипт не запускается
  • Почему не считывается Barcode?

    @Us59 Автор вопроса
    Александр, картина в целом вот такая:
    5cd2b1d811b74249240508.png
    Может это один баркод?
  • Почему не считывается Barcode?

    @Us59 Автор вопроса
    Если это пародия на штрих код, то получается смысла от него нету? просто так лепить штрих код не думаю, что есть смысл, а если это не популярный формат, то можно как-то вычислить какой это всеже?)
  • Could not execute script и ошибка 500?

    @Us59 Автор вопроса
    Роман Мирр, боюсь это ничего не изменит, код в полном порядке, могу показать вам на почту прислать. там 150 строк
  • Could not execute script и ошибка 500?

    @Us59 Автор вопроса
    Роман Мирр, я написал свой сценарий - он вызывает точно такие же ошибки как и сайт, значит проблем в коде нету, писали 2 разных человека, а ошибки одни, я ссылаюсь в большей степени, что че-то не хватает серверу, мб память закончилась, или еще чего и он не смог выполнить скрипт, и выдал эту ошибку, но это не говорит о том, что ошибка в самом сценарии...
  • Could not execute script и ошибка 500?

    @Us59 Автор вопроса
    Роман Мирр, спросил у хоста, сказали мол у меня только 1 процесс, cron задачи не считаются процессами как я понял, он даже уточнил специально и сказал, что по ним нет ограничений никаких.. :(( тогда почему скрипты не могут запуститься? Это не 1 скрипт, а десятки крон задач с одной и той же ошибкой сыпятся.
  • Could not execute script и ошибка 500?

    @Us59 Автор вопроса
    Сергей Горностаев, это не возможно, софт я купил. он закодирован, я не могу изменять его. Все что я могу - это перенести свои cron задачи либо в 1 задачу, либо я думаю возможно перенести на другой хост...
  • Как сделать несколько UPDATE одним запросом?

    @Us59 Автор вопроса
    Потому что хостер говорит, мол много запросов к БД идет из-за этого я получаю Error 500 иногда :(
  • Что использовать при большом количестве UPDATE запросов?

    @Us59 Автор вопроса
    Роман Мирр, смотрел в лог, там ничего нету сверх естественного..
  • Что использовать при большом количестве UPDATE запросов?

    @Us59 Автор вопроса
    Роман Мирр, я делал запросы по отдельности, но иногда при клацаний по основному сайту я начал получать Error 500, при этом если через 1-2 секунды обновить страницу снова ошибка пропадает. Мне сказали, мол слишком много запросов к БД идет, это причина error 500, но как пишут товарищи внизу - это бред и ошибка в чем-то другом.
  • Что использовать при большом количестве UPDATE запросов?

    @Us59 Автор вопроса
    Иван Шумов, Какие проблемы с базой?? какие могут быть проблемы? запрос составлен не правильно? или что? Вы лучше дельный совет дайте, если есть понимание, а не просто отправляйте юзера туда, не знаю куда, сделать то, сами не знаете чего. Множество запросов я сейчас стараюсь сделать одним запросом, а не десятком через циклы.

    Я действительно не понимаю, про какие проблемы с БД вы говорите. У меня нет проблем с mysql, я спрашиваю как можно делать задачу через 1 запрос, чтобы не создавать 100 запросов отдельно, разве это не правильно?
  • Что использовать при большом количестве UPDATE запросов?

    @Us59 Автор вопроса
    user_test_345, 17 CRON задач висят которые запускаются каждую минуту.
    Как думаете, это мало?
  • Что использовать при большом количестве UPDATE запросов?

    @Us59 Автор вопроса
    Расскажите про транзакции поподробнее, что это?
    500 ошибка возникает не во время выполнения скрипта, а если скрипт выполняется сделать какое-нибудь действие на сайте которое связано с бд мы 50/50 можем получить эту ошибку, я спрашивал у поддержки хоста сказали может быть из-за большого количества обращений к бд за 1 секунду.
  • Как задать условие в Mysql запросе?

    @Us59 Автор вопроса
    Rsa97, понял, спасибо в любом случае за ваше время, тогда буду использовать 2 запроса.
  • Как задать условие в Mysql запросе?

    @Us59 Автор вопроса
    Rsa97, в таблицу sc_orders мы будем заносить заказы в дальнейшем из таблицы codes. В sc_orders мы как раз проверяем, а есть ли заказы в процессе?!) если >= 20 мы не будем заносить новые, иначе если меньше мы должны занести 1,2, или 10 в зависимости от того, сколько в процессе (статус 5).
  • Как задать условие в Mysql запросе?

    @Us59 Автор вопроса
    Rsa97, система должна работать вот так:
    Проверяем, есть ли заказы в таблице sc_order со статусом 5, если нету должны загрузить 20 шт (лимит задаем через переменную) если в таблице 20шт, то ничего не делать, если в таблице 10 штук, то нужно загрузить 10, т.е. смысл таков, что мы должны взять заказы из таблицы, при этом учитывать текущее количество заказов (оно обозначается статусом 5), чтобы в сумме это не превышало заданный лимит.
  • Как задать условие в Mysql запросе?

    @Us59 Автор вопроса
    Rsa97, ну выборку из двух таблиц сделать можно проще в таком случае. Мне нужно именно проверять количество записей в sc_order если их 5, то из codes выбирать только 15 записей.
  • Как задать условие в Mysql запросе?

    @Us59 Автор вопроса
    Я не очень силен в mysql, но как тут проверяется вот этот момент:
    Если в sc_orders есть 5 записей со статусом 5 из codes мы должны получить только 15 записей?