Браузер (хром) заботливо показывает что при ответе запроса высылается кука и тут же делает примечание что кука была заблокирована. Причина то мне понятна - нет атрибута SameSite , поэтому установка куки расматриватеся как при режиме SameSite=Lex. А атрибут SameSite=None действителен только при атрибуте Secure и https-протоколе.
Что делать то? Есть варианты как-то обойти это на локалке?
Думаю, сначала стоит заняться профайлингом, что бы понять - где теряется время.
Второе - такие вещи нужно запускать и консоли, а не через веб.
Ну и третье - сохранять состояние после каждой операции, что бы повторный запуск продолжал работу, а не начинал сначала.
На счёт третьего: так может и сделать ограничение на чтение только 50 товаров за один запуск скрипта? После чтения 50 продукта установить cron, что бы через две-три минуты запустить этот же скрипт.
Я пока не знаю как перейти к чтению именно мне нужного продукта, но думаю это можно реализовать.
Большого файла нет: увеличил свой файл до 3,500 товаров методом копи-паст.
При оригинальном коде, у меня выдало ошибку "Fatal error: Maximum execution time of 30 seconds exceeded" уже когда в базу записался 150-ый товар. Время работы скрипта: 4 минуты.
Когда я подправил свою функцию _custom_function_save_current_param(), а именно убрал проверку, связную таблицу, так что бы напрямую записывался каждый объект параметра при вызове функции, то теперь у меня сгенерировалась ошибка "Fatal error: Maximum execution time of 30 seconds exceeded" только уже когда в таблице было записано 672 товара (это 20102 параметра).
Последний вариант у меня занял 7 минут, и то, учитывая что у меня в локальном php.ini прописано следующее:
Да, сейчас попробую сделать так, как вы советуете с Эстерио.
MiksIr пишет:
XMLReader не читает весь файл в память. Он оперирует курсором, указывающим на текущее положение в файле и операции сдвига курсора.
А со временем у него в другом месте проблема, тут хоть кусками, хоть не кусками.
Ты же видишь что я читаю offer классом XMLElementIterator - это уже не чистый XMLReader (это я сейчас тыкаю пальцем в небо). Иначе прочитать параметры продукта я не смог.
Да, читаешь файл кусками, ищешь там метку "<offer", по ней разбиваешь на маленькие файлы, потом натравливаешь свой импортер на эти файлы. После успешного импорта удаляешь эти временные файлы.
Мне прочитать каждый кусок файла с offer и затем создать мини-файл, например, в папке tmp? Я пока не знаю как это реализовать в коде, но разве так парсер не захлебнётся?
Этот участок кода, у меня занимает полминуты. Ведь в функции _custom_function_save_current_param() я должен сначала сделать проверку, а не существует ли такой param-объект в таблице, записать если надо, потом в отдельной таблице (связь many-to-many) записать связь между offer_id и param_id.
Короче мой парсер точно захлебнётся с большим XML-файлом. Как на практике парсить разумно? Частями?
Так найдите регистратора поприличнее. За 25$ в год можно даже VPS уместить вместе с доменом.
Да, соврал. Посмотрел на one.com там за местные адреса 6евро, а за .com и .org по 12евро.
Да дело не в этом же. Я реально даже справки не навёл ещё. Я устанавливаю первый сайт. Господи, я вообще сейчас о другом думаю. Придёт время, возьму я хост. Только речь же не об этом идёт.
Сначало он уверяет что таких хостов не бывает, теперь я жмот и ждёт меня печальная карьера. Он вас всегда такой "заботливый"? Может ему жениться пора?
В строке 154 слова 'fruits'. Нужно каждое 1ое совпадение со словом fruits заменить на яблоки, каждое второе на ананасы и тд. Всего цикл из семи фруктов. Яблоками должны стать каждый 1, 8, 15 и тд...
Как сортировать второй массив, что бы первый подвергнулся такому же алгоритму сортировки.. короче нужно просортировать два массива что бы ключи сохранили своё соответсвие.
Что делать? Сделать один массив и его сортировать, а потом назад разбить на два массива?
Рискну предположить, что DAO - это Database Adapter Object. Но что такое service по мнению авторов материала - остаётся догадываться.
Про паттерн "адаптер" в общих чертах можете почитать <a href='http://ru.wikipedia.org>здесь</a>
Да, я дал мало информации. Это курс по PHP , который потом плавно вытекает к программирование на Drupal. Вот авторы просят создать 4 папки: business, presentation, data и entities.
сам контроллер лежит в root, а вид (в presentation) выкладывать не буду. Вот три файла:
entities/book.class.php
public static function addNewBook($title,$genre_id){
BoekDAO::create($title,$genre_id);
}
}
Я не стал выкладывать все файлы, выставил только три, что касается одного энтити, - книги. Мой главный вопрос этого топика: для чего нужна папка business? В контроллере я обращаюсь BoekService::addNewBook($title, $genre); Но я жу могу также обратиться и так BoekDAO::create($title, $genre_id);?
Вот в учебном материале сказано: создайте DAO и service. Простыми грубыми словами: DAO служит абстрактной прослойкой с ДБ, а сервис описавает методы для DAO. Обычно: 1 service для одного DAO. А я так и не понимаю цели service. Разве нельзя описать поведение сразу в DAO?