- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
VK приобрела 70% в структуре компании-разработчика red_mad_robot
Которая участвовала в создании RuStore
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день, гении сего раздела.
Хочу улучшить работу скрипта, и сделать его более легким в плане обработки данных.
Код примерно такой
set_time_limit(0);
ignore_user_abort(true);
include_once("cfg.php");
$date_chek= date("Y-m-j H:i:s");//Дата поста
$ch = curl_init();
$sql = mysql_query("SELECT * FROM xxxxx WHERE id and `chek`='0' limit 1000");
if(mysql_num_rows($sql) >0) {
while($r = mysql_fetch_array($sql)) {
$id= $r["id"];
тут идет обновление ID и значение chek`='1'
далее curl проверяет полученный SELECTом контент, контент примерно 3-50 цифро- букв
Одна итерация цикла одно значение.
Затем в таблицу 2 добавляется провернное значение, но только в том случае- если оно соответствует условию.
в конце
В базе очень много значений 3-4 миллиона .
Как можно оптимизировать данный скрипт? Буду вам очень благодарен за помощь.
Может какую очистку использоать типа ob_start flush и тд.
На экран данные не выводлятся.
Берется в одной таблице, проверяется обновляется, попутно по условию дублируется в таблицу 2
P.S С миллионами еще не работал.:popcorn:
Оптимизировать для чего?! он медленно работает или работает не корректно? Какая цель то?
Если все работает лучше не трогать, можно на крон это все дело поставить если еще не стоит, и по кусочкам что бы не нагружать проверять/обновлять.
"SELECT * FROM xxxxx WHERE id and `chek`='0' limit 1000"
выбирать желательно не все поля, а те, которые используются в скрипте - будет быстрее.
выложите весь код, и да, какая цель оптимизации?
"SELECT * FROM xxxxx WHERE id and `chek`='0' limit 1000"
выбирать желательно не все поля, а те, которые используются в скрипте - будет быстрее
Как вы оцените затраты по времени против последующей операции проверки внешнего сайта?
на крон это все дело поставить если еще не стоит, и по кусочкам
+1 Делаю ровно так как написано. Из-за того что проверяемый хост может не откликаться проверю по одному хосту. Выставляю признак начала проверки. Если скрипт не завершиться за положеные N секунд этот признак остается в бд и сигнализирует что сайт не отзывается. Если отдает ошибку - увеличиваю счетчик ошибок и перепроверяю через несколько дней. Но это возможно специфика задачи - у меня не миллион сайтов в проверке.
Оптимизировать для чего?! он медленно работает или работает не корректно? Какая цель то?
Нет работает корректно, без ошибок. Выполняется по крону, как вариант установить лимит времени минуты 3, я думаю за это время 1000 обработает.
лимит времени минуты 3, я думаю за это время 1000 обработает.
Уверены что из 1000 сайтов не найдется такой который будет три минуты тормозить?
"SELECT * FROM xxxxx WHERE id and `chek`='0' limit 1000"
выбирать желательно не все поля, а те, которые используются в скрипте - будет быстрее.
выложите весь код, и да, какая цель оптимизации?
выборка идет из одного поля + условие `chek`='0' и того три ячейки попадают в выборку, в запросе.
ТОлько я что то не пойму как выбрать конкретные поля.
Да и по сути один запрос имеет очень мало данных
А структура Пример
CREATE TABLE IF NOT EXISTS `information` (
`id` int(55) NOT NULL auto_increment,
`model` varchar(100) NOT NULL default '',
`nomer` int(6) NOT NULL default '0',
`chek` int(1) default NULL,
`date_chek` datetime NOT NULL default '0000-00-00 00:00:00',
`status` varchar(255) NOT NULL default '',
`used` varchar(255) NOT NULL default '',
`pustoy` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY (`model`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3960813 ;
--
-- Дамп данных таблицы `information`
--
INSERT INTO `information` (`id`, `model`, `nomer`, `chek`, `date_chek`, `status`, `used`, `pustoy`) VALUES(22, 'usa890654', 0, 1, '0000-00-00 00:00:00', '', '', '');
---------- Добавлено 05.09.2012 в 11:28 ----------
Уверены что из 1000 сайтов не найдется такой который будет три минуты тормозить?
Проверка идет нормально, хосты не проверяются, выборка идет с Яндекса.
выборка идет из одного поля
Orly? SELECT * FROM...
И вот этот фрагмент не понятен: WHERE id
Проверка идет нормально, хосты не проверяются, выборка идет с Яндекса.
И на старуху бывает проруха... :)