PHP.SU

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

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

> Найдено сообщений: 35
Koc Отправлено: 09 Апреля, 2018 - 17:07:19 • Тема: Парсер цен большого сайта? • Форум: Работа с сетью

Ответов: 2
Просмотров: 2226
Строитель пишет:
Можно к примеру передавать GET-параметры, и на их основе обрабатывать массив. Скопируйте и запустите код из примера ниже, и обратите внимание на адресную строку браузера после запуска скрипта


Спасибо, хорошее решение, все работает.
Koc Отправлено: 06 Апреля, 2018 - 22:42:07 • Тема: Парсер цен большого сайта? • Форум: Работа с сетью

Ответов: 2
Просмотров: 2226
Доброго времени,

Нужно переодически парсить цены на сайте поставщика, написал простой код (добавил его ниже).

Запускаю на обычном хостинге, все работает нормально, НО есть небольшая проблема, если в файле больше 500 товаров, то скрипт уходит в 504 ошибку. Я так понимаю не хватает ресурсов хостинга (точнее времени выполнения скрипта), а там товаров более 5000. Приходится запускать по несколько раз скрипт руками, чтобы спарсить все.

Вопрос: Есть какие-то решения, чтобы запустить скрипт один раз и пусть он там потихоньку парсит все цены сразу?

Я уже думал на хостинге настроить cron, который будет каждые 10 сек в течении 5 минут запускать мои парсер, а в сам скрипт добавить сохранение позиции на которой остановились прошлый раз и при новом запуке начинать уже с нее. Но может есть какие-то другие решения?

Заранее спасибо за помощь!

PHP:
скопировать код в буфер обмена
  1.  
  2. $csv = fopen('price.csv', 'r'); // Файл в котором хранятся названия и артикул товаров
  3. while (($row = fgetcsv($csv, 1000, ';')) !== FALSE) {
  4.     $html = file_get_contents('http://site.ru/catalog/'.$row[1]);
  5.     preg_match('|<div class="price">(.*?)</div>|i', $html, $price);
  6.     if($price[1]){
  7.         // Тут код обработки новой цены
  8.     }
  9. }
  10. fclose($csv);
  11.  
Koc Отправлено: 25 Марта, 2018 - 11:01:56 • Тема: Как выполнить функцию после выполнения другой функции? • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 846
andrewkard пишет:
Варианты есть, конечно. Можно так:
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function func1(){
  3. alert("1");
  4. func2();
  5. }
  6. function func2(){
  7. alert("2");
  8. }
  9.  
  10.  
  11. func1();
  12.  


Проблема в том что доступа к func1() нет. Скрипт подключается с удаленного сервера , и что-то изменять или добавлять там я не могу.

По этому и подумал, что может можно как-то отслеживать выполнение func1()
Koc Отправлено: 25 Марта, 2018 - 00:42:52 • Тема: Как выполнить функцию после выполнения другой функции? • Форум: JavaScript & VBScript

Ответов: 3
Просмотров: 846
Доброго времени.
Подскажите, можно как-то выполнять свою js функцию, после выполнения другой?
Есть только название другой функции, нужно каждый раз как она выполняется, после нее выполнять свою функцию.
Koc Отправлено: 08 Сентября, 2017 - 02:10:20 • Тема: Как получить данные из связанных таблиц? • Форум: SQL и Архитектура БД

Ответов: 7
Просмотров: 95
Мелкий пишет:
псевдокодом
PHP:
скопировать код в буфер обмена
  1. select /**/ from products
  2. foreach ($response as $row) {
  3.     $result[ $row['id'] ] = $row;
  4. }
  5. select /**/ from attributes where product_id in array_keys($result)
  6. foreach ($response as $row) {
  7.     $result[ $row['product_id'] ]['attributes'][] = $row;
  8. }
  9. return $result;


Большое спасибо, то что надо)
Koc Отправлено: 06 Сентября, 2017 - 22:32:49 • Тема: Как получить данные из связанных таблиц? • Форум: SQL и Архитектура БД

Ответов: 7
Просмотров: 95
Мелкий пишет:

На выбор в зависимости от СУБД:
- невозможно
- в принципе возможно, но вы сами не рады будете
- возможно условно внятными средствами
Два последних варианта по-прежнему будут требовать постпроцессинг данных. Возможно ли сэкономить ресурсы базы на этом относительно двух элементарных запросов с постпроцессингом - большой и очень спорный вопрос.


Проще тогда вытянуть в начале все товары, а потом в цикле для каждого товара вытянуть все его свойства?
Или о каких двух элементарных запросах вы говорите?
Koc Отправлено: 06 Сентября, 2017 - 21:02:32 • Тема: Как получить данные из связанных таблиц? • Форум: SQL и Архитектура БД

Ответов: 7
Просмотров: 95
Есть 3 таблицы:

1. Таблица с товаром (id, название, цена)
2. Таблица со свойствами (id, название)
3. Таблица для связи товара и свойства (id_товара, id_свойства, значение_свойства)

Помогите сделать запрос, чтобы получить все товары с их свойствами в таком виде:
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [id] => 10
  6.             [name] => Название товара
  7.             [свойства_товара] => Array (
  8.                                 [0] => Array
  9.                                         (
  10.                                                 [id_свойства] => 1
  11.                                                 [значение_свойства] => значение
  12.                                         )
  13.                                 [1] => Array
  14.                                         (
  15.                                                 [id_свойства] => 2
  16.                                                 [значение_свойства] => значение
  17.                                         )
  18.                         )
  19.         )
  20.  
  21.     [1] => Array
  22.         (
  23.             [id] => 11
  24.             [name] => Название товара
  25.             [свойства_товара] => Array (
  26.                                 [0] => Array
  27.                                         (
  28.                                                 [id_свойства] => 5
  29.                                                 [значение_свойства] => значение
  30.                                         )
  31.                         )
  32.         )
  33. )


Пробую через LEFT JOIN, но мне возвращается такой массив:
PHP:
скопировать код в буфер обмена
  1.  
  2. (
  3.     [0] => Array
  4.         (
  5.             [id] => 10
  6.             [name] => Название товара 10
  7.             [id_свойства] => 1
  8.             [значение_свойства] => значение_1
  9.         )
  10.                
  11.     [1] => Array
  12.         (
  13.             [id] => 10
  14.             [name] => Название товара 10
  15.             [id_свойства] => 2
  16.             [значение_свойства] => значение_2
  17.         )
  18.  
  19.     [2] => Array
  20.         (
  21.             [id] => 11
  22.             [name] => Название товара 11
  23.             [id_свойства] => 5
  24.             [значение_свойства] => значение_5
  25.         )
  26. )


То есть он один и тотже товар вставляет несколько раз в массив, если у товара несколько значений.

Заранее спасибо!
Koc Отправлено: 08 Сентября, 2016 - 10:47:23 • Тема: Составить запрос для связанных таблиц • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 41
armancho7777777 пишет:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT p.id, p.name, p.published, img.files AS images
  2.   FROM post AS p
  3.   JOIN (SELECT post_id, GROUP_CONCAT(file SEPARATOR ',') AS files
  4.           FROM images GROUP BY post_id) AS img
  5.     ON img.post_id = p.id

Картинки будут разделены запятыми.


Большое спасибо!
Все подошло, я правда там добавил условие WHERE в конце, чтобы вытягивало только опубликованные записи.
Koc Отправлено: 06 Сентября, 2016 - 12:53:06 • Тема: Составить запрос для связанных таблиц • Форум: SQL и Архитектура БД

Ответов: 2
Просмотров: 41
Помогите составить запрос, для связанных таблиц

Что имеем:

Цитата:
Таблица: post
id | name | published
1 | Пост 1 | 1
2 | Пост 2 | 0
3 | Пост 3 | 0
4 | Пост 4 | 1

Таблица: image
id | post_id | file
1 | 1 | img1.jpg
2 | 1 | img2.jpg
3 | 3 | img3.jpg
4 | 4 | img4.jpg


Нужно одним или несколькими запросами вытянуть все опубликованные посты (published = 1) с их картинками. Чтобы в итоге запрос вернул массив типа такого:

PHP:
скопировать код в буфер обмена
  1.  
  2.         [0] => array(
  3.                 'id' => '1',
  4.                 'name' => 'Пост 1',
  5.                 'images' => array(
  6.                         [0] => 'img1.jpg',
  7.                         [1] => 'img2.jpg',
  8.                 )
  9.         ),
  10.         [1] => array(
  11.                 'id' => '4',
  12.                 'name' => 'Пост 4',
  13.                 'images' => array(
  14.                         [0] => 'img4.jpg'
  15.                 )
  16.         )
  17. )
  18.  


Заранее спасибо!
Koc Отправлено: 24 Февраля, 2016 - 17:35:20 • Тема: Планировщик заданий по времени? • Форум: Вопросы новичков

Ответов: 1
Просмотров: 165
Доброго времени,

Есть система управления персоналом, самопис на php. Две группы пользователей, админы и работники. Админ может создать задание для любого работника с описанием и указывать время его выполнения. При создании нового задания - работнику отправляется уведомление на почту.

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

Можно настроить cron на хостинге, но будет ли это правильно, если я его поставлю запускаться например каждую 1 минуту каждый день?

Или может при создании нового задания сразу делать отметки времени для уведомлений, хранить их в отдельной таблице БД, но опять же вопрос, как потом запускать скрипт рассылки писем по этому времени?

Вопрос: Как лучше сделать такой планировщик?
Koc Отправлено: 13 Сентября, 2015 - 00:43:48 • Тема: Как правильно сделать структуру большой БД? • Форум: SQL и Архитектура БД

Ответов: 1
Просмотров: 27
Доброго времени,

Столкнулся с такой задачей, нужно сделать большую базу данных для маркетологов.

Задача следующая:
В БД будут добавляться магазины, к каждому магазину будет добавляться список товаров (до 1000 товаров). Далее 1 раз в неделю для каждого товара будет загружаться цифра (кол-во продаж за эту неделю). И это все нужно хранить в БД.

Потом в админке, показывать статистику продаж, по неделям/месяца. То есть в момент загрузки кол-ва продаж для товара, нужно будет еще и дату привязывать, чтобы потом по неделям/месяцам можно было делать выборку из БД.

ВОПРОС: как правильно организовать структуру БД и в каком формате хранить данные, при условии что она каждую неделю будет увеличиваться.

Например:
добавили 10 магазинов, к каждому магазину добавили по 1000 товара, это 10.000 товара. Каждую неделю для 10.000 товара будут загружать отчет, кол-во продаж, то есть каждую неделю БД будет увеличиваться на 10.000 записей, и через 3 месяца в БД будет 120.000 записей. И так далее каждый месяц она будет расти.
Koc Отправлено: 22 Июня, 2013 - 20:31:10 • Тема: Как декодировать сериализованный массив? • Форум: XML и его обработка

Ответов: 6
Просмотров: 3317
Вроде все получилось..

Мелкий пишет:
Нормальных API с тем же функционалом нет?

Это API с сайта seolib.ru, я для своего проекта который там хочу снимать позиции прям с сайта, чтобы к ним не заходить постоянно!

вот если что инструкция по их API http://www[dot]seolib[dot]ru/script/webinterface/
но они там предлагают поставить свой скрипт и через него все делать, как там в примерах, но зачем мне их скрипт если в CodeIgniter есть встроенная функция для работы с XML
Koc Отправлено: 22 Июня, 2013 - 19:40:40 • Тема: Как декодировать сериализованный массив? • Форум: XML и его обработка

Ответов: 6
Просмотров: 3317
caballero пишет:
так там строка покурочена - через htmlspecialchars что ли пропущена?


Чесно говоря не знаю, мне такой ответ возвращяет XML-сервер, на который делаю запрос.
Попробывал, обработать строку вот этим html_entity_decode, перед тем как делать unserialize.
Koc Отправлено: 22 Июня, 2013 - 18:12:09 • Тема: Как декодировать сериализованный массив? • Форум: XML и его обработка

Ответов: 6
Просмотров: 3317
Мелкий пишет:
Это сериализованный вид.
unserialize, соответственно.


Пробывал, вот такую ошибку выдает:

Цитата:
A PHP Error was encountered
Severity: Notice
Message: unserialize() [function.unserialize]: Error at offset 14 of 301 bytes
Koc Отправлено: 22 Июня, 2013 - 18:00:34 • Тема: Как декодировать сериализованный массив? • Форум: XML и его обработка

Ответов: 6
Просмотров: 3317
Всем доброго времени суток,

Отправляю запрос на XML-RPC сервер и в ответ получаю вот такое значение

PHP:
скопировать код в буфер обмена
  1. (
  2.     [positions] => a:1:{i:0;a:2:{s:7:"keyword";s:14:"&Ecirc;&euml;&thorn;&divide;&aring;&acirc;&icirc;&aring; &ntilde;&euml;&icirc;&acirc;&icirc;";s:10:"freq_query";s:15:"&times;&agrave;&ntilde;&ograve;&icirc;&ograve;&agrave; &ccedil;&agrave;&iuml;&eth;&icirc;&ntilde;&agrave;";}}
  3. )


Подскажите как такой массив в нормальный конвертировать?

Сайт сделан на CodeIgniter, все запросы и ответы получаю через его встроенную библиотеку XML-RPC, вроде и функция есть которая должна конвертировать сериализованный массив в нормальный, но она не работает почему-то.

Заранее Спасибо!

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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB