2016-09-22 2 views
2

Возможно ли поддерживать одно соединение или объект DB для отдельных заданий cron. Сценарий написан на PHP.Поддерживать одно соединение DB для нескольких заданий cron

У меня есть несколько независимых заданий cron для установки/обновления DB. Это также каждые 15 минут. В последнее время превышено максимальное соединение db.

Есть ли какое-либо обслуживание для поддержания соединения db? например, using node.js или javascript Или это возможно объединение соединений с использованием php?

Я попытался постоянное соединение с использованием PHP, как это,

$link = mysqli_connect('p:localhost', 'fake_user', 'my_password', 'my_db'); 

Но тогда не работает, как ожидалось. Каждое задание cron создает отдельное соединение с mysql.

ответ

0

В PHP нет функции объединения пулов, но некоторые из них можно достичь с помощью «mysql_pconnect». В то же время вы должны быть очень осторожны при использовании mysql_pconnect.

Согласно PHP mysql_pconnect:

mysql_pconnect() действует очень похоже на mysql_connect() с двумя отличиями.

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

Во-вторых, подключение к серверу SQL не будет закрыто при завершении выполнения скрипта. Вместо этого ссылка останется открытой для будущего использования (mysql_close() не будет закрывать ссылки, установленные mysql_pconnect()).

Этот тип ссылок поэтому называется «постоянным».

Подробнее нажмите here

Вы можете сделать еще одну вещь, которую вы должны закрыть все соединения DB, который идеально подходит для более чем 30 секунд или 1 минуту, и это может быть сделано через сам хрон.

Во-вторых, вам нужно открыть одно соединение в вашем скрипте cron и закрыть его в конце после выполнения скрипта.

Смежные вопросы