• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Одновременная работа двух скриптов?

  • Автор темы phpprogrammer
  • Дата начала
Статус
Закрыто для дальнейших ответов.
P

phpprogrammer

Доброго времени суток!

У меня 2 вопроса.

1. Есть скрипт, который производит обращение к БД и выполняет некоторую работу с таблицей.

Как сделать так, чтобы при вызове второй копии этого скрипта не нарушалась целостность данных. Т.е. пока работает 1 скрипт, 2 скрипт не может получить доступа к БД.

2. Скрипт при вызове с web-интерфейса должен корректно обрабатывать длинную операцию в фоне (тоже обращении к БД), а не вываливаться в обрыв соединения. Как это реализовать.

Заранее спасибо за ответы!
 
G

GOsha

1. Никаких вопросов при работе с БД не происходит - это вам не файлы.
2. В настройках php.ini - найдите блок Resource Limits и измените
Код:
max_execution_time = 10; Maximum execution time of each script, in seconds
На свое значение более длинное.

На локальном компе проблем нет, а вот с хостерами придется договариваться или переходить на тариф подороже.
Еще можно попытаться изменить php.ini с помощью функции
ini_set
(PHP 4+)

ini_set - устанавливает значение опции конфигурации.

Описание
string ini_set (string varname, string newvalue)

Устанавливает значение данной опции конфигурации. Возвращает старое значение при успехе, FALSE при неудаче. Опция конфигурации будет сохранять это новое значение в процессе выполнения скрипта и восстановится по окончании работы скрипта.

Не все доступные опции могут быть изменены с помощью ini_set(). Ниже приведена таблица со списком всех опций PHP (как в PHP 4.2.0) и с указанием, какие могут быть изменены/установлены и на каком уровне.

Таблица 1. Опции конфигурации
string ini_set (string varname, string newvalue)
Устанавливает значение данной опции конфигурации. Возвращает старое значение при успехе, FALSE при неудаче. Опция конфигурации будет сохранять это новое значение в процессе выполнения скрипта и восстановится по окончании работы скрипта.
Не все доступные опции могут быть изменены с помощью ini_set(). Ниже приведена таблица со списком всех опций PHP (как в PHP 4.2.0) и с указанием, какие могут быть изменены/установлены и на каком уровне.

Таблица 1. Опции конфигурации
....
max_execution_time|"30"|PHP_INI_ALL // Тута есть - значит можно
....

Таблица 2. Определение констант PHP_INI_*
Константа Значение Означает
PHP_INI_USER 1 Вхождение может быть установлено в пользовательских скриптах
PHP_INI_PERDIR 2 Вхождение может быть установлено в .htaccess
PHP_INI_SYSTEM 4 Вхождение может быть установлено в php.ini или в httpd.conf
PHP_INI_ALL 7 Вхождение может быть установлено в любом месте

ХХХХ ))) ПОнятно абисснил? )ГЫ! Всю таблицу найдешь в мануале )

Кста, максимальное количество подключений к базе там тож можно ограничить. ЧИтайте.
 
P

phpprogrammer

Никаких вопросов при работе с БД не происходит - это вам не файлы.

Почему?

Например, первый скрипт удаляет запись с id=1, а второй в это время пытается прочитать строку с id=1. Возникает ошибка.

Как блокировать работу скрипта 2, до того как закончит работу скрипт 1?
 
G

GOsha

ЩА КАК ВДАРЮ!!!!
ОШИБКИ НЕ БУДЕТ. ХОТЬ 3000 ЗАПУСТИ!
Читайте мануалы - на то она и БД, что там не надо ничего делать.
Потому что вы делете запрос серверу БД, который сам делает за вас всю работу.
Прочитайте самую дешевую книгу по PHP-MySQL, которую найдете.
Если вам уже так ссыкатна над этим - в php.ini ограничьте количество допустимых подключений или ссылко к БД.
MySQL является наиболее приспособленной для применения в среде web СУБД (системой управления базами данных). Не секрет, что для исполнения приложений клиента на большинстве хостинг-площадок провайдеры предоставляют небольшое количество ресурсов (как вычислительных, так и дисковых). Поэтому для данного применения необходима высокоэффективная СУБД, обладающая при этом высокой надежностью (большинство web-приложений и сайтов должны работать в режиме 24/7).

По всем этим причинам MySQL стала незыблемым стандартом в области СУБД для web, а теперь в ней развиваются возможности для использования ее в любых критичных бизнес-приложениях, то есть конкурирует на равных с такими СУБД таких производителей, как Oracle, IBM, Microsoft и Sybase.

Основные преимущества MySQL:
многопоточность, поддержка нескольких одновременных запросов;
оптимизация связей с присоединением многих данных за один проход;
записи фиксированной и переменной длины;
ODBC драйвер;
гибкая система привилегий и паролей;
гибкая поддержка форматов чисел, строк переменной длины и меток времени;
интерфейс с языками C и Perl, PHP;
быстрая работа, масштабируемость;
совместимость с ANSI SQL;
бесплатна в большинстве случаев;
хорошая поддержка со стороны провайдеров услуг хостинга;
быстрая поддержка транзакций через механизм InnoDB.
Курите мануалы, читайте ГУГЛЬ.
- Вот вам дискусия на MySQL.RU.
 
P

phpprogrammer

Большое спасибо. Очень доступно объяснил :mellow:
 
G

GOsha

Пока не гаркнешь - хрена кто зашевелится.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!