PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (2): [1] 2 »

> Найдено сообщений: 29
AlexNewaro Отправлено: 15 Июля, 2015 - 04:40:17 • Тема: Большое количество вычислений, в 300 секунд скрипт не укладывается • Форум: Вопросы новичков

Ответов: 1
Просмотров: 138
Удалить тему никак.

Решил вопрос иначе - кардинально снизил нагрузку, изменив логику.

Теперь все вычисления выполняются мгновенно.

Да-да, нужно больше курить мануалов...

Всем читавшим - спасибо
AlexNewaro Отправлено: 15 Июля, 2015 - 02:34:34 • Тема: Большое количество вычислений, в 300 секунд скрипт не укладывается • Форум: Вопросы новичков

Ответов: 1
Просмотров: 138
Приветствую!

Есть скрипт, который, будучи запущенным для необходимых вычислений, не укладывается в таймлимит. Причем паразитных нагрузок вроде не производит. Выбирает записи, отвечающие условию (на данный момент 314), затем для каждой записи делает доп. запрос в другую базу с использованием select_min. Получившийся результат записывает в третью базу.

Успевает обработать 220 из 314 Улыбка

Не хотелось бы увеличивать таймлимит, хочу распределить нагрузку.

Моих скромных познаний хватит только на намутить последовательно выполняющиеся запросы с limit, который рассчитывается исходя из num_rows первоначальной выборки. Но ведь наверняка такие ситуации нередки, когда нужно разделить нагрузку на базу.

Не присоветуете что-нибудь умного?
Ну окромя прямо сейчас перестать использовать MySql и перестать заниматься программированием на PHP? Улыбка
AlexNewaro Отправлено: 13 Июля, 2015 - 19:19:11 • Тема: Кошерно ли прикрыть такую ошибку собакой? • Форум: Вопросы новичков

Ответов: 6
Просмотров: 212
Всем огромное спасибо, все подкинутое мне обязательно покурю, чтобы трупами больше не разбрасываться, при случае Улыбка
AlexNewaro Отправлено: 13 Июля, 2015 - 18:12:33 • Тема: Кошерно ли прикрыть такую ошибку собакой? • Форум: Вопросы новичков

Ответов: 6
Просмотров: 212
Panoptik пишет:
в старые добрые времена, когда все разработчики ПХП писали mysql_query и проверяли ее результат на успех
существовала старая добрая функция mysql_num_rows ...


Спасибо! Как не хватало свежей мысли... А ведь сам у половины запросов num делаю...

Решил так:

PHP:
скопировать код в буфер обмена
  1. if($num > 0) $info = mysql_result($res3,0,'price'); else $info = '0';
AlexNewaro Отправлено: 13 Июля, 2015 - 17:58:44 • Тема: Кошерно ли прикрыть такую ошибку собакой? • Форум: Вопросы новичков

Ответов: 6
Просмотров: 212
Приветствую...

Я уже устаканился в своем решении, но очень хочется испросить мнения профи...

Зилибоба:
CODE (SQL):
скопировать код в буфер обмена
  1.  
  2. $connect = connectDB();
  3. {
  4. $q = "SELECT * FROM `base`.`table` WHERE `column` = '$wow' AND `column2` = '$hey' ORDER BY `hey`";
  5. $qr = mysql_query ($query);
  6. }
  7. closeDB ($connect);


Любопытствую результат Зилибобы:



При исполнении, если возвращается пустая строка, то естественно
CODE (SQL):
скопировать код в буфер обмена
  1. Warning: mysql_result() [FUNCTION.mysql-result]: Unable TO jump TO row 0 ON MySQL result


Но при этом далее в коде решен вопрос как обрабатывать отсутствие результата и что писать в форму если нет результата:
PHP:
скопировать код в буфер обмена
  1. if($roomperiodprice != 0) echo ''.$roomperiodprice.''; else {echo '0';}


И все нормально, ошибка мне жить не мешает, скрипту работать тоже.
И вот решил я поставить волшебную @, аккурат в результат Зилибобы:

, дабы некритичными ошибками усталый мозг не путать.

И тут озарение!!!!!!
Не кошерно это... Есть варианты как решить?

Или хрен с ним и пусть собака охраняет?

Спасибо
AlexNewaro Отправлено: 24 Марта, 2015 - 15:34:54 • Тема: PHP и БД-Сессии - как реализовать конкретную задачу? • Форум: HTTP и PHP

Ответов: 13
Просмотров: 2468
А вы, если несложно, мне любой отвлеченный пример с сессиями и массивами приведите, а то гугл меня сегодня не любит.

exlant пишет:
Проблемы ну как знаете
AlexNewaro Отправлено: 24 Марта, 2015 - 15:25:39 • Тема: PHP и БД-Сессии - как реализовать конкретную задачу? • Форум: HTTP и PHP

Ответов: 13
Просмотров: 2468
Ну процесс работы с базой мне знаком, поэтому и кажется проще.

Запишу в базу по клику, при открытии сводной страницы сделаю запрос из базы...
Баран ведь идет туда, куда знает Ниндзя Огорчение

exlant пишет:
тогда с начало разбирайтесь с массивами, а то без них никуда!
и еще раз вы из базы получите массив! Точно такой же массив вы можете хранить в сессиях! Зачем дергать БД, и писать лишний код? Разве что для тренировки и самообучения!
AlexNewaro Отправлено: 24 Марта, 2015 - 15:17:39 • Тема: PHP и БД-Сессии - как реализовать конкретную задачу? • Форум: HTTP и PHP

Ответов: 13
Просмотров: 2468
У меня глобальный провал по части массивов.
Я ими пользуюсь, но досконально их не понимаю.
Поэтому пока сложно сообразить.

exlant пишет:
запихнуть параметры в массив! вы же из бд тоже массив будете получать!
(Добавление)
Ch_chov в самом начале привел же пример...

AlexNewaro Отправлено: 24 Марта, 2015 - 15:10:13 • Тема: PHP и БД-Сессии - как реализовать конкретную задачу? • Форум: HTTP и PHP

Ответов: 13
Просмотров: 2468
Да я бы рад, но как я буду хранить в сессиях одни и те же переменные, но с разными параметрами?

exlant пишет:
вы так и не ответили почему не можете все эти параметры хранить непосредственно в сессиях??? зачем изобретать велосипед???
Цитата:

Проверьте меня...
Я же могу сделать так?

можете..
генерацию идентификатора, я бы сделал как то так
PHP:
скопировать код в буфер обмена
  1.  
  2. function generatestring($len=32){
  3.         $str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPRQSTUVWXYZ0123456789';
  4.         $str_len = strlen($str)-1;
  5.         $text = '';
  6.         while(strlen($text)<$len)
  7.             $text.=$str[mt_rand (0, $str_len)];
  8.        
  9.         return $text;
  10.     }
  11.  

по всему остальному! можно так сделать, но зачем? чем сессии не подходят?
а по записи сессии в бд или в файл, куча инфы в гугле!
там все можно сделать через session_set_save_handler()
AlexNewaro Отправлено: 24 Марта, 2015 - 14:10:10 • Тема: PHP и БД-Сессии - как реализовать конкретную задачу? • Форум: HTTP и PHP

Ответов: 13
Просмотров: 2468
дык я не против, просто квалификации не хватает сессии в базу писать ))
я понимаю так, что сессии нужно присвоить идентификатор типа случайного хэша.
записать в базу все данные, отобранные юзеров, за своим id и в качестве выборного параметра - хэшем.
а при открытии сводной страницы (корзины) - делать запрос по хэшу и выводить все данные к нему привязанные. так?

exlant пишет:
я так и не понял почему в сессии нельзя это все хранить??

ну и как вариант сделать свои сессии.. писать информацию в файл(ы) или базу, давать юзеру через куки какой то сгенерированный id, и по нему потом дергать инфу из файла(ов) или из базы, хотя по сути сессии так и реализованы, зачем тогда изобретать велосипед?

(Добавление)
Проверьте меня...
Я же могу сделать так?

CODE (text):
скопировать код в буфер обмена
  1.  
  2. $sid = mt_rand();
  3. $_session['sid'] = $sid;
  4.  


В сессии у меня будет крутиться случайное число ['sid'].

Юзер выбрал набор параметров. Нажал что-то типа "сформировать еще одну заявку".
По клику все выбранные данные записались в базу под уникальным ID, одно из полей - `sid`. Ансет всех переменных, кроме ['sid'].

Юзер снова подбирает набор параметров. Снова нажимает "сформировать еще одну заявку".
По клику - еще одна запись в базу под уникальным ID и тем же `sid`. Ансет всех переменных, кроме ['sid'].

Открытие "корзины" - выборка из базы и обработка полученных данных через foreach.
AlexNewaro Отправлено: 24 Марта, 2015 - 12:54:52 • Тема: PHP и БД-Сессии - как реализовать конкретную задачу? • Форум: HTTP и PHP

Ответов: 13
Просмотров: 2468
У меня нет на сайте таких данных, сессии нужны только для работы с этими заявками Улыбка

Ch_chov пишет:
AlexNewaro пишет:
Понятно, что после отправки двух заявок я дестрою сессию

Зачем? В сессии могут быть другие полезные даныне. Например авторизация пользователя на сайте. Удаляйте из сессии конкретный набор данных.
AlexNewaro Отправлено: 24 Марта, 2015 - 11:58:28 • Тема: PHP и БД-Сессии - как реализовать конкретную задачу? • Форум: HTTP и PHP

Ответов: 13
Просмотров: 2468
Есть такое понятие как корзина.
Я под этим понимаю складирование информации о конкретном товаре, к которой потом можно вернуться и пакетно обработать.

А вот если единица "товара" - это набор выбранных пользователем параметров?

То есть человек навыбирал из формы те параметры, которые ему нужны. Оформил заявку, содержащую эти параметры.

Если хочется дать ему возможность сформировать несколько наборов параметров, а потом единой заявкой все отправить - я так понимаю помогут сессии.
Так и реализовал - в сессию записывается первый набор параметров. После повторного выбора параметров, на сводной странице выводятся сразу два набора параметров. Сводная заявка, занавес. Все работает.

НО! Это справедливо на данном этапе моего понимания сессий только для формирования ДВУХ наборов.
А если человеку нужно сделать 5 заявок? Понятно, что после отправки двух заявок я дестрою сессию, он зашел еще раз на страницу выбора параметров, забил еще две - отправил. Потом еще одну.
А как реализовать механизм, чтобы человек мог создавать столько наборов параметров, сколько ему нужно, а потом все разом отправлять в заявке? То есть, по сути, как хранить в "корзине" неограниченное количество наборов?
AlexNewaro Отправлено: 21 Марта, 2015 - 23:05:41 • Тема: Создание ассоциативного массива из БД • Форум: Работа с СУБД

Ответов: 3
Просмотров: 1199
Sail пишет:
AlexNewaro, атрибут value у checkbox'а использовать пробовали? Очень удобно ему задавать значение ID полученной из базы записи...


Куда я без без валью у чекбокса ))
А как я передаю, по вашему, выбранные ID через get-запрос? Они в валью из базы вставляются.

На самом деле вопрос уже решил, спасибо!
AlexNewaro Отправлено: 21 Марта, 2015 - 02:10:25 • Тема: Создание ассоциативного массива из БД • Форум: Работа с СУБД

Ответов: 3
Просмотров: 1199
Приветствую!
Прошу подсказки, а не сделать за меня Улыбка
Приходит из формы произвольное количество ID ( name чекбоксов = exc[] )
При приеме собирается в текстовый ряд ID:

if( count($_GET['exc']) > 0 )
{
$exc = implode(', ',$_GET['exc']);
}

А как я могу получить для каждого полученного ID соответствующее название статьи?
То есть я же не могу прописать заранее ассоциативный массив с названиями в этом случае, так как ID в таблице чекбоксов, доступных пользователю изначально, формируется из базы данных. Получается мне нужно, чтобы ассоциативный массив названий - id сформировался на лету, при получении списка выбранных id.

Жесть, короче, написал.

Посоветуете?
(Добавление)
Уточню:

Вывел таблицу с титлами статей, id статей в качестве value и чекбоксами.
Человек отметил те статьи, что ему интересны.
Запрос GET передал эти выбранные id.

PHP:
скопировать код в буфер обмена
  1. if( count($_GET['id']) > 0 )
  2. {$exc = implode(',',$_GET['id']);}


Скидыщь! Красота - получили

Теперь хорошо бы списочком опять тайтлы подвесить на выбранные id.

Добавляем сборку значений для запроса, выходит так:


PHP:
скопировать код в буфер обмена
  1. if( count($_GET['id']) > 0 )
  2. {$exc = implode(',',$_GET['id']);
  3.  $excquery.= ' IN('.$exc.')';}



Получили запрос:
CODE (SQL):
скопировать код в буфер обмена
  1. $query = "SELECT * FROM puk WHERE `id` = '$excquery'";
то есть
CODE (SQL):
скопировать код в буфер обмена
  1. $query = "SELECT * FROM puk WHERE `id` = 'IN (5,15,67)' ";


Получили в ответ массив титлов.

И вот тут случается попа.

Если бы варианты выбора чекбоксов всегда были одинаковые, то


PHP:
скопировать код в буфер обмена
  1. $puk[5] = 'Про любовь';
  2. $puk[15] = 'Про картошку';
  3. $puk[67] = 'Про соус Карри';



, далее


PHP:
скопировать код в буфер обмена
  1. $exces= array();
  2. foreach ($_GET['id'] as $val) {
  3. $exces[] = $puk[$val];}
  4. $exces= implode(', ', $exces);
  5.  
  6. echo $exces;



Получили бы
CODE (html):
скопировать код в буфер обмена
  1. Про любовь,Про картошку,Про соус Карри


НО!

Чекбоксы все время имеют разные ID, так как список статей для выбора (в самом начале путешествия) формируется на лету из базы, на основе и свежих поступлений. Поэтому заранее определенный ассоциативный массив - не катит. Получается его нужно собирать на лету.

И вот что делать бедному гусару, если список титлов нужен-нужен?
AlexNewaro Отправлено: 16 Марта, 2015 - 11:14:15 • Тема: Откладывание записи в базу на определенную дату • Форум: Вопросы новичков

Ответов: 6
Просмотров: 219
Sail пишет:
AlexNewaro, допустим, есть таблица с актуальными ценами и есть таблица с информацией о новых ценах и датах начала их действия.
Пишете php-скрипт, проверяющий сегодняшнюю дату и обновляющую таблицу с актуальными ценами, если есть новые, действующие с сегодняшней даты.
Скрипт запускаете посредством cron ежесуточно, до начала торгового дня...
В общем, ничего сверхъестественного.


Спасибо огромное за идею, буду реализовывать!

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB