Я потратил несколько дней на создание сценария, который по сути берет некоторые данные в системе db2 и создает для них новые записи в системе mysql. Попутно он выполняет некоторые проверки, и я использую цикл для базовых вставок или обновлений в этих условиях.
Этот скрипт работает, он возвращает то, что я ожидал, и вставляет / обновляет, как ожидалось. Я тестировал его на процесс удаления, обновлений, вставок, независимо от того, истек ли срок действия записи или нет ... в основном каждую функцию этого скрипта я тщательно протестировал.
Мне кажется, что это не так быстро, как могло бы быть, вероятно, оно более последовательное и избыточное, чем должно быть.
Я не привык работать с PDO в таком скрипте, но мне интересно, что я могу сделать здесь, чтобы исправить производительность / скорость и избыточность. Я знаю, что некоторая логика может «показаться» избыточной, но логика именно там, где она должна быть, мне просто интересно, могу ли я использовать функции для уменьшения количества вызовов или циклов, возможно.
Любая помощь или совет приветствуются.
Вы уже задавали тот же вопрос о codereview, и я на него ответил. Затем вы удалили вопрос и ответ и разместили здесь практически тот же вопрос. Судя по названию, вы прочитали мой ответ. Думаю, такое поведение заслуживает отрицательной оценки.






это сложно, меня будут перетаскивать по горячим углям для этого, 1) вы можете вообще не использовать PDO, если уверены, что нет риска атаки прямого впрыска, 2) также я бы посмотрел на реализацию этого вида функции через PHP CLI, то есть через задание acron в триггере curl
В общем, PDO - очень дорогой способ выполнить запрос. Простая строка под mysqli_query() будет примерно в 2,5 раза эффективнее.
Блин, я бы хотел знать об этом до того, как начал портировать более 500 000 записей! ха-ха. Никакого риска инъекционной атаки нет. это локально работающий скрипт, который запускается каждую ночь
Я был бы счастлив использовать mysqli_query(), вы также можете использовать PHP в режиме PHP CLI (в основном bash через crontab, а затем иметь файл журнала, который вы отправляете по электронной почте в конце и т. д.), Потому что CLI быстрее в любом случае, быстрее для пакетной обработки и не t тайм-аут
ОК. Итак, смог бы я эффективно пройти через этот сценарий и заменить свои PDO-соединения старым mysqli / odbc_connect, а затем просто изменить свои точки подготовки / выполнения, чтобы они соответствовали?
да нетрудно получить что-то более упорядоченное. у вас есть логика, поэтому он просто вставляет и вставляет новые методы ... вы можете быть удивлены, что писать гораздо меньше ... у вас будет меньше кода, чем сейчас ... также я думаю, если вы использовали CLI и mysqli-query вы приблизитесь к увеличению скорости в 3,5 раза
Могу я просто сказать, что я проделал это во всех университетских городках и реплицировал данные в двух направлениях в СЕМЬ систем одновременно каждую ночь и сознательно никогда не использовал PDO, поэтому у меня есть опыт в этом ... и когда вся компьютерная система кампуса вышла из строя, этого не произошло. и он восстановил все примерно за 20 минут .. но эй, это SO, так что я получил скидку .. люблю троллей
Что именно вы имеете в виду, не используя PDO, если нет риска инъекционной атаки? Кажется, вы предполагаете, что либо mysqli менее безопасен, либо вам не нужны подготовленные операторы. Между прочим, я не согласен с обоими.
не уверен, что вы имеете в виду, товарищ, mysqli_query в операционном отношении проще ... это в основном ODBC поверх оптимизированных интерфейсов, если вы удалите подготовленные операторы, SQL превращается в текст, анализируемый в драйвер через порт ... и он ожидает ответа ... нет «объекты» для всплытия в память и тривиальные накладные расходы памяти, кроме фазы ответа, когда вы май получаете сетку, которая (если вы это делаете) максимально двумерна в терминах указателя ... ... он использует DB2 в любом случае raw SQL безопасен для использования если вы делаете струны ручной работы, вы точно знаете, что они содержат, если это скорость, вам нужно
В отношении вашей точки 1), пожалуйста, не делайте вывод, что mysqli менее безопасен и не может обрабатывать атаки SQL-инъекций, которые может выполнять PDO Только.
@MrHeelis, можем ли мы обсудить один быстрый момент в чате? если ты можешь
Думаю, этот вопрос лучше подошел бы к codereview.stackexchange.com