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

123
siv1987
На сайте с 02.04.2009
Offline
427
#11
for93t:
А если и на локальном и на продакшн серверах нужно будет в cli запускать?

И что с того я так и не понял? Логика ТСа все равно не будет нарушена, потому что ее просто нету.

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

За то куда быстрее чем выполнения hostname. А "вызов" функции это та же фингя как спорить что быстрее sizeof или count.

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

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

ну передавайте в кроне аргумент, какой сервер юзаете. Примерно так

/usr/local/bin/php -f /home/имя_хостинга/путь_к_скрипту/script.php 15 afgfnm 34

а потом выдергивайте их

$а=$argv[1]; 

$some_text=$argv[2];
$age=$argv[3];

В нашем примере после этих строк переменная $а внутри крон-скрипта будет равняться 15, переменная $some_text будет равна afgfnm, а переменная $age = 34.
Нужен прогер на php+mysql+понимание чужего кода? (/ru/forum/540660) Вам сюда PHP-шаман (http://php-shaman.pw/)
R34-zevs
На сайте с 15.07.2006
Offline
238
#13

Ф-ция php_sapi_name();

на локальном выдает - apache2handler

а на сервере - cgi-fcgi

Если указывать переменную $_SERVER - то выдает ошибку, т.к. на нашем сервере при запуске из под кронтаба эта переменная вообще пустая

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

Передавайте тогда через крон необходимые параметры как показано выше.

---------- Добавлено 28.05.2013 в 21:21 ----------

R34-zevs:
на локальном выдает - apache2handler
а на сервере - cgi-fcgi

из крона она должна показать cli. кронтаб этот тот же CLI режим (командный интерфейс)

F9
На сайте с 13.04.2008
Offline
104
#15
siv1987:
И что с того я так и не понял?

Вот это условие:

if(php_sapi_name() == 'cli')

будет выполняться и на локальном и на продакшп серверах, т.е значение $_SERVER["REMOTE_ADDR"] везде будет одинаковым (127.0.0.1 в вашем случае) и подстановка конфигурации в зависимости от окружения не будет работать

siv1987:
За то куда быстрее чем выполнения hostname.

Это к предмету обсуждения (нашего с вами, в рамках этой ветки) отношения не имеет.

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

siv1987:
А "вызов" функции это та же фингя как спорить что быстрее sizeof или count.

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

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

R34-zevs, попробуйте вот такой вызов в кроне на продакшн-сервере:

* * * * * export IS_PROD_SERVER_ENV="yes"; /your/php/script/path

А в самом скрипте вот такой вызов:

getenv("IS_PROD_SERVER_ENV");

должен вернуть заданное значение.

siv1987
На сайте с 02.04.2009
Offline
427
#16
for93t:
будет выполняться и на локальном и на продакшп серверах, т.е значение $_SERVER["REMOTE_ADDR"] везде будет одинаковым (127.0.0.1 в вашем случае) и подстановка конфигурации в зависимости от окружения не будет работать

Когда это будет, тогда ТС логику и перестроит.

for93t:
Сравнивать быстродействие sizeof или count - несколько другой случай.

Учитываю скорость их выполнения, этот примерно тот же случай.

F9
На сайте с 13.04.2008
Offline
104
#17
siv1987:
Учитываю скорость их выполнения, этот примерно тот же случай.

Не могу согласиться. Все зависит от контекста, в случае ТС "стоимость" вызова php_sapi_name, empty, а также sizeof и count всерьез рассматривать, действительно, смысла нет. Peace :)

Хорс
На сайте с 14.12.2010
Offline
21
#18
R34-zevs:
for93t, (Debian)

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

Хорс, (Debian)

Проверьте значение ключа variables_order в вашем php.ini

Скорее всего там стоит значение:

variables_order = "GPCS"

и если вы поменяете его на "EGPCS"

то скрипт начнёт видеть константы из /etc/environment (после перезагрузки естественно)

D8
На сайте с 16.06.2007
Offline
74
dm8
#19

............................................................

TF-Studio
На сайте с 17.08.2010
Offline
334
#20

А не проще единые данные задать?

Всё ещё лучший способ заработка для белых сайтов: GoGetLinks (https://www.gogetlinks.net/?inv=fahbn8).
123

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