Помогите советом: один файл и разные переменные для БД.

12 3
R34-zevs
На сайте с 15.07.2006
Offline
238
891

Есть у нас константы для подключения к БД. Но смысл в том, что на локальном компе у нас одни данные для подключения, а на сервере - другие. Раньше мы делали проверку по ip адресу вида if ($_SERVER["REMOTE_ADDR"] == "127.0.0.1").

Но теперь этот файл мы подключаем через crontab а для него не существует в переменной SERVER данного значения. как нам быть? Нам необходимо, чтоб по какому-то параметру мы определяли где сервер, а где локальный комп и чтоб работало на crontab.

Агентство недвижимости Фабрика Жилья (http://xn--80aacvicll3bzbzgqb.xn--p1ai/)
Хорс
На сайте с 14.12.2010
Offline
21
#1

в кроне:


IS_SERVER=Yes

в скрипте:


if ('Yes' == $_ENV['IS_SERVER'])
R34-zevs
На сайте с 15.07.2006
Offline
238
#2

Хорс, на нашем сервере такая переменная не выводится (и на локальном компе тоже). 😒

F9
На сайте с 13.04.2008
Offline
104
#4


$hostname = trim(`hostname`);
if ('production.server.host.name' == $hostname) {
// Используем данные для продакшн-сервера
} else {
// Используем данные для локального сервера
}
siv1987
На сайте с 02.04.2009
Offline
427
#5

или


if(php_sapi_name() == 'cli')
{
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
}
if ($_SERVER["REMOTE_ADDR"] == "127.0.0.1")
F9
На сайте с 13.04.2008
Offline
104
#6
siv1987:
или


if(php_sapi_name() == 'cli')
{
$_SERVER['REMOTE_ADDR'] = '127.0.0.1';
}
if ($_SERVER["REMOTE_ADDR"] == "127.0.0.1")

У ТСа вроде CLI на production, а такой код сделает скрипт нерабочим, т.к. будут использоваться реквизиты для локального сервера.

Кстати, самый простой способ проверки на CLI-режим, это:


if (empty($_SERVER['REQUEST_METHOD'])) {
// CLI mode ...

и не нужно никаких php_sapi_name()

siv1987
На сайте с 02.04.2009
Offline
427
#7
for93t:
У ТСа вроде CLI на production, а такой код сделает скрипт нерабочим, т.к. будут использоваться реквизиты для локального сервера.

А crontab это что, внешний сервер? Тут уж ТС как-то сам разберется какой у него локальный а какой нет.

for93t:
и не нужно никаких php_sapi_name()

Это против фэншуя?

Хорс
На сайте с 14.12.2010
Offline
21
#8
R34-zevs:
Хорс, на нашем сервере такая переменная не выводится (и на локальном компе тоже). 😒

Что за сервер?

Если debian (ubuntu) подобный, то прописать константу в /etc/environment

F9
На сайте с 13.04.2008
Offline
104
#9
siv1987:
А crontab это что, внешний сервер? Тут уж ТС как-то сам разберется какой у него локальный а какой нет.

А если и на локальном и на продакшн серверах нужно будет в cli запускать?

siv1987:
Это против фэншуя?

Без понятия, не силен в фэншуе. Но вызов функции по-любому "дороже" проверки переменной на пустое значение.

R34-zevs
На сайте с 15.07.2006
Offline
238
#10

for93t, (Debian)

---------- Добавлено 28.05.2013 в 22:05 ----------

Хорс, (Debian)

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий