Должен ли я использовать PHP или Perl для массирования моих данных и их хранения / извлечения с MySQL? - PullRequest
3 голосов
/ 07 декабря 2008

У меня есть настольное приложение, которое должно отправлять данные на MySQL Server. Приложение предназначено для внутреннего использования компанией, но MySQL находится на сервере хостинговой компании.

Перед вставкой данных нужно немного помассировать, а стандартным простым способом вставить, удалить и обновить.

Что я должен использовать PHP или Perl?

Сейчас я использую PHP для различных веб-страниц, управляемых базой данных, но моя текущая задача не нуждается в веб-рендеринге. (Я знаю, что PHP может сделать это и без веб-рендеринга)

Я использовал Perl в прошлом (возможно, 4 года назад) для задачи интеллектуального анализа данных и Oracle.

Что я не знаю: Perl может легко работать с MySQL? - Perl-скрипты будут идти в cgi-bin на веб-сервере, правильно? - Проблемы с безопасностью либо? В Perl для подключения к MySQL для вставки данных? - Где можно хранить имя пользователя и пароль для вставки, обновления, удаления MySQL, чтобы они не были украдены и т. Д.?

Что бы вы все выбрали?

Мысли ценятся

1017 * Джейсон *

Ответы [ 7 ]

15 голосов
/ 07 декабря 2008

Модуль Perl DBI является очень мощным и позволяет легко избежать атак с использованием SQL-инъекций благодаря использованию связанных параметров. Посмотрите 'perldoc DBI' для деталей об использовании заполнителей в инструкциях SQL. Защитить имя пользователя / пароль для базы данных можно с помощью обычной защиты файлов Unix, поместив учетные данные в защищенный от чтения файл.

Модуль DBIx :: Class и Class :: DBI позволяет отображать всю базу данных и отношения в объекты Perl. Это позволяет очень быстро обходить базу данных, генерируя безопасный код по пути без необходимости написания единственной строки SQL. Это сравнение Class :: DBI и DBIx :: Class может помочь вам выбрать, какой из них; как обычно с Perl, существует несколько способов сделать это . Если вам нужна вся структура, библиотека Rose предоставляет Rose :: DB :: Object для упрощения доступа.

Вы можете запускать сценарии Perl либо из командной строки, либо из каталогов cgi-bin.

[Спасибо за draegtun за предложения других классов-оболочек базы данных]

9 голосов
/ 07 декабря 2008

Ну, оба могут отлично работать с MySQL. Это действительно просто предпочтение и уровень комфорта. Поскольку вы говорите, что совсем немного разбираетесь в PHP, это может быть более продуктивным для вас.

2 голосов
/ 07 декабря 2008

PHP отлично работает из командной строки. Если это то, с чем вы знакомы, и, что более важно, с чем знакома компания (подумайте о том, кто должен поддерживать ее после вас).

2 голосов
/ 07 декабря 2008

Perl, потому что DBI гораздо более зрелый и имеет больше инфраструктуры вокруг. Но если вы уверены, что будете придерживаться mysql, «обычная» привязка из PHP довольно хорошо протестирована и используется большинством программистов баз данных PHP.

2 голосов
/ 07 декабря 2008

DBI в Perl очень похож на PDO PHP или объектно-ориентированный mysqli, но если вы никогда не использовали их, сейчас самое время изучить его ...

1 голос
/ 07 декабря 2008

Если вы знакомы с написанием веб-приложений на PHP, вы уже знаете, как писать консольные приложения на нем.

Единственное отличие в том, что вы выводите открытый текст вместо HTML и некоторые новые суперглобальные переменные $ argc и $ argv, которые содержат аргументы командной строки.

Если вы используете PDO или класс MySQLi, вы можете использовать параматеризованные или подготовленные запросы.

Работа с БД, вероятно, была бы такой же простой на любом языке, поэтому для вашего приложения главное, что вам нужно будет решить, с каким языком вам удобнее манипулировать данными?

0 голосов
/ 18 марта 2014

Может ли Perl легко работать с MySQL?

Да, LAMP раньше был Linux, Apache, MySQL и Perl. Любители используют PHP вместо :-P. Более серьезно, PHP стал намного лучше за последние несколько лет, но Perl стал более зрелым, поэтому используйте его, если можете, не нарушая сроки доставки.

Сценарии Perl будут помещаться в cgi-bin на веб-сервере, правильно?

Пока ваш веб-сервер может обращаться к сценарию и выполнять его, он может находиться в любом каталоге, который вам нравится. Существование каталога cgi-bin - это просто попытка отделить статические страницы от динамических. Проще говоря, если ваш веб-сервер может запускать PHP из каталога, он также может запускать Perl оттуда.

Проблемы безопасности либо с?

Старайтесь не писать SQL, который уязвим для атак SQL-инъекций; do NOT используйте старые функции PHP mysql_, вместо этого используйте функции PDO или mysqli_. Как с PHP, так и с PERL, используйте связанные переменные и проверяйте все входные данные.

Лучшая практика в Perl для подключения к MySQL для вставки данных?

использовать библиотеку Perl DBI , она очень зрелая и при правильном использовании со связанными переменными ограничивает возможность выполнения атак SQL-инъекций.

Где можно хранить имя пользователя и пароль для вставки, обновления, удаления MySQL, чтобы они не были украдены и т. Д.?

Проще говоря, вы не можете дать абсолютную гарантию. Создайте пользователя MySQL с минимальными правами, необходимыми для работы программы. то есть пользователь не должен иметь прав на удаление таблиц, удаление баз данных и т. д. Вы можете разместить связанный с базой данных код вне каталога, доступного веб-серверу, чтобы предотвратить случайную загрузку критического файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...