Ответы пользователя по тегу PHP
  • Как сделать тяжелый импорт из excel 800к товаров?

    syschel
    @syschel
    freelance/python/django/backend
    1. У вас именно EXEL файл или всётаки CSV который вы открываете на десктопе с помощью экселя?
    2. Если всётаки EXEL файл. Там слишком много всего нагорожено, на вроде вёрсток и формул или голые таблицы?
    3. Если всётаки голые таблицы. Вы можете делать именно CSV файл?

    Если данные будут в CVS формате, то можно всё загрузить средствами MYSQL и не использовать для обработки PHP или его библиотеки. Тогда результат будет в разы выше, чем если перебирать с помощью ПХП и потом кормить в MSQL

    Когда я в своё время сталкивался с проблемой загрузки файла товаров в базу, там было несколько миллионов единиц, то оптимальным стало именно такое решение > LOAD DATA

    Кусок моего старого MySQL кода, для наглядности
    // Загружаем кашерный файл
    LOAD DATA LOCAL INFILE '/srv/cms_cpa/files/adimport_items.csv' INTO TABLE adimport_tmp CHARACTER SET utf8 FIELDS TERMINATED BY '|' ENCLOSED BY "'" LINES TERMINATED BY '\n' IGNORE 1 LINES (id_adimport,article,available,currencyId,delivery,description,id,name,oldprice,param,picture,price,url,vendor,advcampaign_id,advcampaign_name);
    
    // Загружаем только нужные поля (!!!)
    LOAD DATA LOCAL INFILE '/srv/cms_cpa/files/adimport_items.csv' INTO TABLE adimport_tmp CHARACTER SET utf8 FIELDS TERMINATED BY '|' ENCLOSED BY "'" LINES TERMINATED BY '\n' IGNORE 1 LINES (id_adimport,@ISBN,@adult,@age,article,@attrs,@author,available,@barcode,@binding,@brand,@categoryId,@country_of_origin,currencyId,delivery,description,@downloadable,@format,@gender,id,@local_delivery_cost,@manufacturer_warranty,@market_category,@model,@modified_time,name,oldprice,@orderingTime,@page_extent,param,@performed_by,@pickup,picture,price,@publisher,@sales_notes,@series,@store,@syns,@topseller,@type,@typePrefix,url,vendor,@vendorCode,@weight,@year,advcampaign_id,advcampaign_name,@deeplink);
    
    // Все поля
    LOAD DATA LOCAL INFILE '/srv/cms_cpa/files/adimport_items.csv' INTO TABLE adimport_tmp CHARACTER SET utf8 FIELDS TERMINATED BY '|' ENCLOSED BY "'" LINES TERMINATED BY '\n' IGNORE 1 LINES (id_adimport,ISBN,adult,age,article,attrs,author,available,barcode,binding,brand,categoryId,country_of_origin,currencyId,delivery,description,downloadable,format,gender,id,local_delivery_cost,manufacturer_warranty,market_category,model,modified_time,name,oldprice,orderingTime,page_extent,param,performed_by,pickup,picture,price,publisher,sales_notes,series,store,syns,topseller,type,typePrefix,url,vendor,vendorCode,weight,year,advcampaign_id,advcampaign_name,deeplink);

    Ответ написан
  • Безопасно ли записывать "секретные" данные в txt-файл с именем из кракозябр (например salkgkawj2145lkjsalfkj@24lkjl), который открыт для чтения?

    syschel
    @syschel
    freelance/python/django/backend
    Не безопасно, вспомним утечки всех СМСок у крупных сотовых операторов лет 5 назад.

    Можно хранить в тхт файлах, но раз есть пхп на сервере, то через него и отдавать. То есть "база" из файлов лежит в папке, к которой из вне не попасть, но сам пхп может смотреть папку и вычитывать файлы. Вот этот пхп пускай на время сессии и выдаёт контент файлов. Этот же пхп файл определяет и права на доступ к данным, если там многопользовательский вариант или просто парольный доступ.
    Через мод_реврайт, можете симулировать расширение .txt в адресной строке, а через контент тип формат text.
    Ответ написан
  • Автоудаление, чистка записей в БазеДанных?

    syschel
    @syschel
    freelance/python/django/backend
    у меня 2 таблицы, в рдну я пихаю адреса зарегистрированных пользователей, в другую, адреса тех кто покупает без регистрации. таким образом адрес привязан только к этому заказу, как потом автоматически удалить его из БД? и правильно вообще так делать?

    Смотря что за магазин. Если реальный и живой с претензией на рост, то удалять ничего нельзя. Нужно будет для маркетологов статистику собирать. Графики для продажников рисовать.
    Адрес доставки можешь хранить в заказе, а можешь в юзере. Можешь авторегистрировать юзера по данным из заказа. Возможно ты захочешь приветствовать старого юзара, начислять бонусы, вести историю или начать предугадывать корзину. Много вещей куда нужны данные если магазин будет расти и он реален.
    Если же это просто тестовая среда разработчика или на какой-то джумле поднят магазин, то без разницы, всёравно ты через пол года его удалишь.

    Можешь связи каскадные установить на таблицы (при удалении одной записи удаляются все связанные).
    Можешь триггеры написать на события.
    Можешь эвенты написать.
    Можешь отдельную команду на крон повешать с запуском по таймеру раз в день, неделю, месяц, год на удаление "старого".

    Вообще, удалять "старое" и "не нужное", как я заметил, это маниакальная идея всех новичков. Для большой БД лучше если записи не будешь трогать а оставишь на месте, чем удалять постоянно. Крупные ресурсы обычно симулируют удаление, просто введя поле delete или подобное в каждую таблицу, а по нему отображают или нет.
    Ответ написан
  • Как правильно спарсить данные и записать их в БД?

    syschel
    @syschel
    freelance/python/django/backend
    Ищешь уникальное значение (поле) которое есть у всех записей. По нему и сравниваешь. Если в базе есть с таким значением в этом поле запись - обновляем, если нет то создаём. В базе можно даже принудительно сделать данное поле уникальным, что бы ругалось при дублях.

    З.Ы. Не плохо бы указывать и базу данных и тип данных (хотя бы откуда они берутся), для нормального ответа, а не угадывания мыслей..
    Ответ написан
  • Создание веб-страниц сайта на базе готовой БД. Как?

    syschel
    @syschel
    freelance/python/django/backend
    Вот здесь лежит цмс, которая вам нужна. Другого решения нету.
    Ответ написан
  • Будет ли работать mysql с нагрузкой примерно триллион записей?

    syschel
    @syschel
    freelance/python/django/backend
    Проблема врятли будет в самой базе данных. Как правило всё упирается в три вещи:
    1. Сами запросы и оптимизация их.
    2. Конфигурация базы данных и самого сервера. Ну и правильно расставленные индексы.
    3. Ресурсы сервера с базой данных.
    Ответ написан
  • Какой делать выбор ученику закончивший 11 класс?

    syschel
    @syschel
    freelance/python/django/backend
    Если не хватает личного самоконтроля, тогда да - ехать в другое место. ВУЗ выбирать всётаки по отзывам выпускников и учащихся. Думаю найти в социалках не официальные группы факультетов не проблема. Ибо не везде дадут качественные и нормальные знания.

    Но самое главное, без самообразования и практики, ни один ВУЗ в IT специальности в странах СНГ ни черта не даст. Вуз даёт только фундамент, очень нужный фундамент. Тот на который самоучки обычно не обращают внимание и с годами некоторые жалеют. Особенно когда начинают работать с большими и серьёзными проектами, с большой нагрузкой. Это всё базовые вещи. Они помогут быстрее искать решения, но не всегда дадут сами решения. И обязательно, начав учиться, ищи работу (подработку) по теме будущей специальности, а не левой вроде макдака или ночного сторожа в садик. Работая с реальными, а не теоретическими задачами, больше знаний впитаешь и опыт работы подкопишь. А он в сфере IT сейчас играет главную роли, если не идти в гугл или майкрософт, там просят корочки. Теоретические, тестовые, учебные задачи, дают мало реальной практики и мало пригождаются в жизни. Ибо как не печально, в большинстве ВУЗов СНГ, тема IT отстаёт от текущих реалий лет на 20-30. А специфика у нас такова, что за год успевают появится десятки новых технологий и умереть десятки старых. По этому работа по профилю, пускай в начале "за еду". Через годик "практики", переведёшся на другую работу если что.

    Советчиков про "корочки" не слушай. Я вот самоучка в программировании. И за десять лет работы в сфере, понял, что базовых знаний ВУЗа, мне сильно не хватает. А там, за время учёбы, много чего в голову напихают. Многое не осядет, но хотя бы маркеры в памяти останутся, на то куда смотреть и что искать. Первые лет 8, пока занимался мелочовкой и середняком. Знаний самоучки и гугла хватало. Даже считать себя начал крутым программистом. Как столкнулся с большими командными проектами, а в команде увидел таких же "самоучек", но заканчивавших ВУЗ по IT специальностям, сразу увидел свой уровень. Единственное с чем соглашусь, что цена диплома никакая на рынке труда, без опыта работы. Но вот знания что дают, даже в паршивом месте, с этим не согласен.

    P.S. Пока молодой. Обязательно иди учится по специальности и обязательно заканчивай, не бросая на полпути. В 30-40 лет, когда будет семья, дети, работа. Будет сложнее, да и уже "поздно".
    Ответ написан
  • Как примерно описать состав команды для разработки интернет проекта?

    syschel
    @syschel
    freelance/python/django/backend
    Не понятен объём задачи. Для второго Google перечисленных слишком мало, для сайта визитки слишком много. Что вы вкладываете в понятие "интернет проект"?
    Ответ написан
  • Куда перейти с php?Python или Ruby?

    syschel
    @syschel
    freelance/python/django/backend
    Если отталкиваться только от критериев:
    1. Востребовано
    2. Много платят

    То ИМХО, не верное направление мысли. Нужно развивать свой уровень в одном направлении, а не шарахаться во все стороны на полумерах. Ибо хороший высококлассный специалист на PHP, будет более востребован и с большим окладом. Чем посредственный программист на Py/Ru.
    Ответ написан
  • Как сделать правильные пути к файлам css/js на всех страницах сайта?

    syschel
    @syschel
    freelance/python/django/backend
    Правильно:
    /templates/css/style.css

    Не правильно:
    ./templates/css/style.css.

    Не правильно:
    templates/css/style.css.

    Прочитайте про относительные и абсолютные пути.
    Ответ написан
  • Как создать-настроить триггер в mysql?

    syschel
    @syschel
    freelance/python/django/backend
    Вы базу убьёте. При наплыве пользователей и их активности, у вас очередь будет из сотен "триггеров" на обновление всех пользователей. По вешайте лучше на крон пересчёт каждые N минут.

    Добавлю, по вашей логике. Триггер запускается когда идёт обновление таблицы юзера. И вы хотите сразу же запустить массовое обновление всех юзеров. Что вызовет по каждому юзеру новую волну обновлений. Вечный цикл.
    Ответ написан
  • Как взять айди из бд, пользователя который сейчас в сессии?

    syschel
    @syschel
    freelance/python/django/backend
    Тут смотреть только в ту часть кода, которая отвечает за авторизацию. И дорабатывая её, а уже с этим воевать.
    Просто так, зашёл и получил список пользователей онлайн, только на основании, что у них открыта сессия, нельзя. Или писать мега великий бубен с чтением файлов сессии с HDD сервера. Но их никто не писал никогда и не пишет. Только если какой "хакер", получил доступ к чужому сайту и хочет "подсмотреть" кто из пользователей онлайн. Да и то не будет заморачиваться таким способом.
    Дорабатывают систему авторизации обычно, через дататайм авторизации и последующем его обновлением при гуляние по сайту. А потом смотрят, кто авторизировался за последние 5-10-15 минут.
    Ответ написан
  • Как скрыть значение "0" (Ноль) ?

    syschel
    @syschel
    freelance/python/django/backend
    <?php if($msg_cnt) echo $msg_cnt; ?>
    <?php if($msg_cnt!=0) echo $msg_cnt; ?>
    <?php if($msg_cnt>0) echo $msg_cnt; ?>
    Ответ написан
  • Имеет ли смысл полный рабочий день для программиста? Производительность труда?

    syschel
    @syschel
    freelance/python/django/backend
    Лично я точный ответ дать затрудняюсь. Хотя и сам веб-программист почти 10 лет. Порой зависит от проекта. Один проект хочется делать и делать. Сначала делаешь на работе, задерживаясь на час-два в офисе, потом приходишь домой и поужинав до поздней ночи сидишь и делаешь его.
    А порой, особенно если штамповка, даже пара часов работы уже вгоняет в уныние. Выручает при штамповке, как правило, отдельная доп оплата за каждый такой штамп. И тут уже интерес на штамповать побольше.
    Ответ написан
  • Помогите найти уязвимость php

    syschel
    @syschel
    freelance/python/django/backend
    В более менее нормальной системе, невозможно писать в БД, даже зная логин пароль, так как указывается при подключении к БД ip адрес конкретного сервера(ов).

    Угу. Только вот большинство сайтов крутятся на хостинг площадках, а не на ВДС/ВПСах у владельцев сайтов.
    Зная логин и пароль к БД:
    1. Смотрим по вхъюсам, куда ссылается домен (НСы). В 99% это будет хостер.
    2. Заходим на хостинг, смотрим фак как добраться до пхпмайадмину(если майскул). В 98% ссылка на него будет в свободном доступе от самого хостера. Или будет гуглитсмя за 3 минуты.
    3. Делаете в базе что хотите.
    Ответ написан