Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
Есть скрипт, краткая суть его работы это "Чтение файла по строчкам, сравнение информации строки с БД, и выполнение нужных действий" Дело в том что он не укладывается в тайм_ лимит на хостинге, Cron и SSH не вариант так как пользователь хочет "ему так надо" запускать через веб интерфейс. Подскажите как можно запустить скрипт поэтапно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 10:00 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
Делайте скрипт таким, чтоб за один запуск он успешно переваривал некоторую часть данных и отмечал где-то (в базе, например) на каком месте он остановился. При следующем запуске с этого места пусть и начинает. Скрипт дёргать аяксом с веб-странички. Ответ от сервера будет сигналом для следующего запуска. Попутно можно прогресс-бар вывести. Разумеется, если закрыть браузер (отрубить инет, выключить комп), то выполнение задачи приостановится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 10:24 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
Пусть скрипт вызывает сам себя с передачей новому экземпляру параметра "откуда продолжать". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 16:43 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
Добавлю. Однажды, делал через браузер пользователя, высылал ему после порции обработки страницу с <meta http-equiv="refresh" content="10;URL=http://url?param=..."> после чего браузер обновлял страницу благодаря чему снова вызывался скрипт с передачей ему параметра откуда продолжать обработку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 16:48 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
morewindДобавлю. Однажды, делал через браузер пользователя, высылал ему после порции обработки страницу с <meta http-equiv="refresh" content="10;URL=http://url?param=..."> после чего браузер обновлял страницу благодаря чему снова вызывался скрипт с передачей ему параметра откуда продолжать обработку. Спасибо, взял Ваш вариант на вооружение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 18:16 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
morewind<meta http-equiv="refresh" content="10;URL=http://url?param=..."> после чего браузер обновлял страницу благодаря чему снова вызывался скрипт с передачей ему параметра откуда продолжать обработку.Вполне рабочий вариант при некоторых оговорках. А именно, если повторная обработка данных (после обрыва/восстановления связи, например, или при вызове скрипта из закладок) не принесёт проблем, кроме попусту потраченного времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2015, 19:23 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
все равно время от времени получаю Fatal error: Maximum execution time of 120 seconds exceeded in E:\home\magaz\www\load2.php on line 48 если обрабатываю построчно и передаю по ссылке смещение от куда начинать читать файл , то все работает , но неимоверно долго ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 08:52 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
ssaich, тогда надо подходить с другой стороны... Что за файл,каков его размер и что вы конкретно сравниваете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 09:13 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
kunaksergeyssaich, тогда надо подходить с другой стороны... Что за файл,каков его размер и что вы конкретно сравниваете. Есть вот такой код Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 09:20 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
ssaich, какой формат и размер имеет файл import.tmp? Вы сами его генерируете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 09:33 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
kunaksergeyssaich, какой формат и размер имеет файл import.tmp? Вы сами его генерируете? Да там просто строки с разделителем @@@ обычный текстовый файл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 10:14 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
ssaichвсе равно время от времени получаю Fatal error: Maximum execution time of 120 seconds exceeded in E:\home\magaz\www\load2.php on line 48 если обрабатываю построчно и передаю по ссылке смещение от куда начинать читать файл , то все работает , но неимоверно долго Как вариант, ловить самому время выполнения скрипта и при приближении к 120сек вызывать meta_page_refresh для этого в самом начале написать $currTime = time(); и в цикле обработки проверять if ($currTime + 100 < time()) и при истине вызывать meta_page_refresh и завершать работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 11:45 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
если размер файла это слабое место, то нужно разбирать его с помощью системы или писать код на пример на СИ и запускать его через system() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 12:02 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
morewind, Залил на хостинг, работает без проблем, у меня же на локальном хосте нет нет, да подглючит (настройки пхп сделал почти такие же как у хостера) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 12:27 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
quot ssaich Возможно, общая производительность сервера у хостера существенно выше чем локального хоста, поэтому скрипт успевает отработать до таймлимита. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 12:46 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
kunaksergeyесли размер файла это слабое место, то нужно разбирать его с помощью системы или писать код на пример на СИ и запускать его через system() Для бинарников, и прочих пользовательских программ, тоже могут стоять ограничения на время выполнения, и тот же "код на СИ" будет прибиваться по таймлимиту. И менее универсальнее, хостер может поменять архитектуру сервера и "код на СИ" перестанет работать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 13:07 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
ssaichЗалил на хостинг, работает без проблемПротестируйте в часы наибольшей нагрузки на сервер, во время выполнения бекапов. Результаты иногда могут оказаться иными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2015, 13:08 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
А можно узнать суть задачи? что за файл, почему сравнивается именно с базой данных, какая задача решается вашим скриптом? И откуда такой большой объем данных, если он не укладывается в тайм_лимит? Может просто брать информацию из базы, сохранять в обычный файл на сервере, и потом уже работать как с отдельной структурой информации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 00:30 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
ShkrylAndreiА можно узнать суть задачи? что за файл, почему сравнивается именно с базой данных, какая задача решается вашим скриптом? И откуда такой большой объем данных, если он не укладывается в тайм_лимит? Может просто брать информацию из базы, сохранять в обычный файл на сервере, и потом уже работать как с отдельной структурой информации. Ну проблема уже скажем так решена , ради интереса алгоритм его работы кратко опишу 1) Открываем и читаем файл построчно 2) Отключаем весь товар что есть в БД (то есть не показываем его покупателю) 879441@@@HUAWEI ASCEND G630 BLACK@@@1@@@8040.00@@@HUAWEI ASCEND G630 BLACK@@@278 886991@@@Автомобильный FM-модулятор ROLSEN RFA-340@@@1@@@440.00@@@Автомобильный FM-модулятор ROLSEN RFA-340@@@297 и так далее 3) Разбиваем строку сначала $ex=explode("@@@",$buffer); Проверяем по коду 879441 в базе- есть ли такой товар в базе ? Если нет, то Разбиваем по пробелу для того что бы выбрать фирму(производителя), для примера в первой строке фирма HUAWEI, но есть строки такого вида для фирма (производитель ) по порядку первое либо второе и тд например Автомобильный FM-модулятор ROLSEN RFA-340 $model=explode(" ",$ex[1]); Далее спрашиваем у базы есть ли такой производитель ? $model[0] если нет то спрашиваем , а такой ? $model[1] если нет то спрашиваем еще раз , а такой ? $model[2] Если нашли производителя получаем его код и пишем в базу сам товар с кодом производителя Далее пишем информацию (к какой категории товара его отнести и тд)в другие таблички Если товар есть , то Обновляем у товара только цену, и включаем его (товар отображается на витрине) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 09:30 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
ssaich, авторАвтомобильный FM-модулятор ROLSEN RFA-340 $model=explode(" ",$ex[1]); Я так понимаю, что в $model[0] у вас попадет Автомобильный и это станет вашим производителем и вы будете искать его в списке производителей? Сколько ж у вас запросов к базе при обработке файлов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 09:51 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
kunaksergeyssaich, авторАвтомобильный FM-модулятор ROLSEN RFA-340 $model=explode(" ",$ex[1]); Я так понимаю, что в $model[0] у вас попадет Автомобильный и это станет вашим производителем и вы будете искать его в списке производителей? Сколько ж у вас запросов к базе при обработке файлов? В данном случае , если по производителю - то три запроса Автомобильный соответственно производителем не может быть, третий запрос по слову ROLSEN будет верным Сам файл выгружается из 1С в таком вот виде, а "конфигураст 1с" не сделал почему то, что при загрузке прайса в 1с производитель попадал туда куда надо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 10:00 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
ssaich, Если у вас производитель гарантировано только из больших букв, то можно c помощью регулярки выдернуть только такие слова или например сформировать запрос из нескольких условий и брать первую строку результата... Уже получится -2 запроса при итерации... А лучше взять 1С-ника, пусть выгружает вам данные в xml, далее xslt получаешь своих производителей и одним запросом получаешь свои данные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2015, 11:05 |
|
||
|
Пошаговая работа PHP скрипта
|
|||
|---|---|---|---|
|
#18+
kunaksergeyssaich, Если у вас производитель гарантировано только из больших букв, то можно c помощью регулярки выдернуть только такие слова или например сформировать запрос из нескольких условий и брать первую строку результата... Уже получится -2 запроса при итерации... А лучше взять 1С-ника, пусть выгружает вам данные в xml, далее xslt получаешь своих производителей и одним запросом получаешь свои данные. мммм... например ? можно кусочек кода ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.09.2015, 15:13 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=39045647&tid=1461532]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
84ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 267ms |
| total: | 456ms |

| 0 / 0 |
