PHP.SU

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

Страниц (27): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец

> Найдено сообщений: 394
NeuroZ Отправлено: 13 Сентября, 2016 - 09:57:17 • Тема: Помогите оптимизировать SQL запрос • Форум: Вопросы новичков

Ответов: 8
Просмотров: 330
На сайте 15к товаров
Есть таблица с товаром
Id и десяток полей

Есть таблица с ценами
Id, ItemID, и пяток полей

Есть таблица со складом
Id, ItemID и пяток полей

Есть таблица связей товар-категория
Id, ItemID, CatID

Задача тривиальная: вывести определенное кол-во товара на странице категории.

Запрос:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT item.name, item.sku, item.image, item.manufacturer, stor.count, pr.price, pr.currency
  2. FROM items AS item
  3. LEFT JOIN prices AS pr ON pr.itemID = item.id
  4. LEFT JOIN storage AS stor ON stor.itemID = item.id
  5. LEFT JOIN items_cats AS cat ON cat.itemID = item.id
  6. WHERE cat.catID = 1
  7. ORDER BY item.name ASC LIMIT 0, 30;
NeuroZ Отправлено: 06 Сентября, 2016 - 13:54:08 • Тема: CURL - отправка большого файла через POST • Форум: Вопросы новичков

Ответов: 6
Просмотров: 701
Мелкий пишет:
Дайте лучше var_dump. С типами как-то удобнее.
Попробуйте браузером отправить, отлаживать передатчик и приёмник по отдельности.

PHP:
скопировать код в буфер обмена
  1. object(CURLFile)#684 (3) {
  2.  ["name"]=>
  3.   string(64) "D:\OpenServer\domains\autosite\images/uploads/import20160825.zip"
  4.   ["mime"]=>
  5.   string(0) ""
  6.   ["postname"]=>
  7.   string(0) ""
  8. }
  9.  
  10. array(1) {
  11.   ["import20160825"]=>
  12.   array(5) {
  13.     ["name"]=>
  14.     NULL
  15.     ["type"]=>
  16.     NULL
  17.     ["tmp_name"]=>
  18.     NULL
  19.     ["error"]=>
  20.     NULL
  21.     ["size"]=>
  22.     NULL
  23.   }
  24. }

Как бы не сильно много информации... (
(Добавление)
Может быть есть какая-то директива на ограничение максимального места в tmp_files ? И ее тоже надо на сервере поправить ? (имеется в виду помимо upload_max_filesize)
(Добавление)
Разобрался. Пока отбой тревоге. Проверял массив по привычке, используя внутренние функции фреймворка... Оказалось что-то там не чисто, потому как в глобальном $_FILES файл есть, а в $files объекте фреймворка его нет...
Похоже баг детектед...
NeuroZ Отправлено: 06 Сентября, 2016 - 12:32:08 • Тема: CURL - отправка большого файла через POST • Форум: Вопросы новичков

Ответов: 6
Просмотров: 701
Мелкий пишет:
Проверяйте таймауты принимающего веб-сервера. И client_max_body_size (или его аналог) так же именно на самом веб-сервере.

Большое спасибо! Это здорово помогло!
Теперь ошибки при передачи нет и size_upload == upload_content_length

Но возникла другая проблема... Сам массив, в котором должен был лежать файл - почему-то пуст... (хотя в реальности скрипт грузится минуту, т.е. можно предположить что сам файл передается, но он почему-то не доступен в $_FILES)....

PHP:
скопировать код в буфер обмена
  1. [import20160825] => Array
  2.         (
  3.             [name] =>
  4.             [type] =>
  5.             [tmp_name] =>
  6.             [error] =>
  7.             [size] =>
  8.         )
NeuroZ Отправлено: 06 Сентября, 2016 - 10:44:57 • Тема: CURL - отправка большого файла через POST • Форум: Вопросы новичков

Ответов: 6
Просмотров: 701
IllusionMH пишет:
через какое время обрывается. Может ограничение на время выполнения max_execution_time или вроде того?

Сбрасывался через 30сек.
Поставил
max_execution_time = 3600
max_input_time = 3600
на сервере приемщике и отправщике. Никаких изменений.

Добавил вывод ошибок. Вот что получается:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. (
  3.     [url] => myurl
  4.     [content_type] =>
  5.     [http_code] => 0
  6.     [header_size] => 0
  7.     [request_size] => 306
  8.     [filetime] => -1
  9.     [ssl_verify_result] => 0
  10.     [redirect_count] => 0
  11.     [total_time] => 29.328
  12.     [namelookup_time] => 0.016
  13.     [connect_time] => 0.031
  14.     [pretransfer_time] => 0.031
  15.     [size_upload] => 116490450
  16.     [size_download] => 0
  17.     [speed_download] => 0
  18.     [speed_upload] => 3971987
  19.     [download_content_length] => -1
  20.     [upload_content_length] => 175979724
  21.     [starttransfer_time] => 1.045
  22.     [redirect_time] => 0
  23.     [redirect_url] =>
  24.     [primary_ip] => serverIP
  25.     [certinfo] => Array
  26.         (
  27.         )
  28.  
  29.     [primary_port] => 80
  30.     [local_ip] => 192.168.0.45
  31.     [local_port] => 1854
  32. )
  33. [b]56, Recv failure: Connection was reset[/b]
  34.  


Нашел в интернете инфу, что нужно добавить
PHP:
скопировать код в буфер обмена
  1. curl_setopt($curl, CURLOPT_HTTPHEADER, ['Expect:']);

но не помогло. В первый раз скрипт просто висел (грузится бесконечно).
Второй раз выдал отладочную инфу с ошибкой:
55, Send failure: Connection was aborted

Начал гуглить, нашел инфу о max_execution_time (который уже увеличил)
Еще нашел, что можно увеличить таймаут самого курла:

Изменения по прежнему не принесли результатов...
Разве что снова начали попеременно выбрасываться ошибки
55, Send failure: Connection was reset
56, Recv failure: Connection was reset


Отправку осуществляю с локальной машины Apache (Open Server) PHP7 на удаленный сервер PHP7 в режиме CGI
(Добавление)
Даже добавил в каждый файл (приема и отправки) set_time_limit(3600);
Но все равно обрывы. Больше всего смущает именно
[total_time] => 29.953 (который постоянно варьируется около этого значения)
NeuroZ Отправлено: 05 Сентября, 2016 - 17:52:31 • Тема: CURL - отправка большого файла через POST • Форум: Вопросы новичков

Ответов: 6
Просмотров: 701
Всем привет!
Столкнулся с проблемой, бьюсь уже второй день...
Не могу отправить большой файл через CURL.
PHP:
скопировать код в буфер обмена
  1. $curl = curl_init();
  2.         curl_setopt($curl, CURLOPT_URL, 'http://site.ru/index.php?1c.upload&filename=' . $filename);
  3.         curl_setopt($curl, CURLOPT_COOKIE, $cookie);
  4.         curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  5.         curl_setopt($curl, CURLOPT_POST, true);
  6.         curl_setopt($curl, CURLOPT_POSTFIELDS, $files); //Массив с файлом полученный через полный путь к zip архиву
  7.         echo $out = curl_exec($curl);

Если отправляю архив 10 Mb - всё успешно передается.
Если отправляю 200 Mb - чуть чуть грузится, а потом страница обновляется, и вообще никакого ответа от сервера.

echo curl_getinfo($curl, CURLINFO_HTTP_CODE);
возвращает 0

в php.ini на сервере-отправщике стоит
upload_max_filesize = 500M
post_max_size = 500M

Что еще может быть не так?
NeuroZ Отправлено: 05 Июля, 2016 - 10:26:32 • Тема: Проверка файла на удаленном сервере • Форум: Программирование на PHP

Ответов: 7
Просмотров: 3923
А можно вопрос - зачем в данном примере использовать fclose ?
Ведь если его не использовать, то все равно код отработает как надо.

Вопрос возник в связи с минимизацией условия в одну строку
CODE (htmlphp):
скопировать код в буфер обмена
  1. $a = ($f=fopen($file)) ? $file : 'a';
NeuroZ Отправлено: 08 Февраля, 2016 - 15:39:12 • Тема: Анимированный JPG - миф или реальность? • Форум: Вопросы новичков

Ответов: 5
Просмотров: 222
DelphinPRO пишет:
Расслабься. гифка это.

А почему тогда mime не гифовский? https://yadi[dot]sk/i/sWJWWBBpoVqtC
NeuroZ Отправлено: 08 Февраля, 2016 - 13:48:34 • Тема: Анимированный JPG - миф или реальность? • Форум: Вопросы новичков

Ответов: 5
Просмотров: 222
http://media-cache-ec0[dot]pinimg[dot]co[dot][dot][dot]dd24b2513a20[dot]jpg
Это как вообще? Что-то не догоняю... Ниндзя
NeuroZ Отправлено: 25 Января, 2016 - 15:05:41 • Тема: Привязать шаблон к домену • Форум: Вопросы новичков

Ответов: 1
Просмотров: 559

Да простят меня админы за некропост Радость

Реально. А еще хорошо иметь свой сервер, с которым будут общаться твои шаблоны, на котором будет хранится список "легальных" доменов. С которым, собственно и будет сравнивать скрипт шаблона на легальность.
NeuroZ Отправлено: 14 Декабря, 2015 - 12:25:19 • Тема: Нужно что-то вроде Cron, но не он... • Форум: Вопросы новичков

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

А посоветую не извращаться и оставить минутный допуск.

Да, с текущей задачей так и сделаю. Но инфа очень полезная для всеобщего обозрения. Может когда-нибудь пригодится Улыбка
(Добавление)
esterio пишет:

Как вариант взгляните сюда
https://github[dot]com/treffynnon/PH[dot][dot][dot]ob-Queue-Wrapper

Спасибо, интересная тема Улыбка
NeuroZ Отправлено: 14 Декабря, 2015 - 11:24:02 • Тема: Нужно что-то вроде Cron, но не он... • Форум: Вопросы новичков

Ответов: 6
Просмотров: 331
Спасибо, очень помог ответ. Теперь есть куда покапать Улыбка
Пользуясь случаем, хочу уточнить 2 момента:
Мелкий пишет:
Плюс не забыть про возможность скрипта упасть внезапно самому.

А как в таком случае осуществлять проверку работает скрипт или нет?
Мелкий пишет:
поставить сервер очередей

А Вы что посоветуете? Он как виртуальный сервер ставиться или "сервер" - это просто такое название у него?
NeuroZ Отправлено: 14 Декабря, 2015 - 08:37:58 • Тема: Нужно что-то вроде Cron, но не он... • Форум: Вопросы новичков

Ответов: 6
Просмотров: 331
Однако
NeuroZ Отправлено: 12 Декабря, 2015 - 10:47:55 • Тема: Нужно что-то вроде Cron, но не он... • Форум: Вопросы новичков

Ответов: 6
Просмотров: 331
Есть сайт доска объявлений. Пользователь, который размещает объявления, может в ЛК нажать на кнопку "поднять" и дата обновления объявление изменяется, и оно перемещается в самый верх списка объявлений.
Есть также кнопка "автоподнятие". При клике на нее, должен срабатывать скрипт, который будет автоматически, каждые 3 часа, поднимать объявление.

Если использовать крон с интервалом выполнения "каждый час", то в этом смысла не будет.
Например в 12:01:38 должна подняться реклама. Фактически она будет подниматься в 13:00, 14:00 и т.д.
Т.е. как бы первое автоподнятие срабатывает с погрешностью в час, а все остальные автоподнятия приравниваются к времени запуска скрипта.
Но это нас не устроит, т.к. в указанное время будут одновременно подниматься все объявления, которые стоят на автоподнятии.
Соответственно толку от такого автоподнятия - никакого.

А нужно сделать так, чтобы каждое объявление поднималось именно в свое указанное время. Желательно вплоть до секунд.
(Добавление)
Вариант который нашел в интернете - запустить скрипт через консоль командой nohup с & на конце предложения.

При этом внутри скрипта написать зацикливание с задержкой в секунду.
Подвергает сомнению лишь то, на сколько это загрузит сервак? Это приемлемый выход? Так вообще делают или есть более гуманный (для сервера) способ?

p.s. И еще не нашел инфы, что будет если перезагрузить сервер? Скрипт автоматически запуститься или его надо будет снова запустить в ручную через nohup?
NeuroZ Отправлено: 31 Августа, 2015 - 15:08:36 • Тема: SQL выборка с парсингом JSON • Форум: Вопросы новичков

Ответов: 4
Просмотров: 195
Мелкий пишет:
Классическая таблица о двух полях (FK до таблицы A, FK до таблицы B) и первичным ключом на оба этих поля.

А, ну да)) спасибо)))
NeuroZ Отправлено: 31 Августа, 2015 - 14:15:49 • Тема: SQL выборка с парсингом JSON • Форум: Вопросы новичков

Ответов: 4
Просмотров: 195
Мелкий пишет:
ISO SQL - нет.
А, например, в postgresql - можно.
Но лучше разверните нормальную связь М:М.

Спасибо, а можете привести пример как должна выглядеть нормальная связь М:М ?

Страниц (27): В начало « ... 2 3 4 5 [6] 7 8 9 10 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB