imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Веб-мастеру > Веб-программирование
Опции темы
Старый 30.08.2006, 02:13     # 1
winsov001
Guest
 
Сообщения: n/a

Question Проблема с получением конфигов

Подскажите пожалуйста.
Имеется класс для работы с базой данных myDB (mybd.php). Есть так же файл common.php
с настройками вида:
PHP код:
<?php     
require_once('mydb.php');     
$DB_MYSQL['dbhostname']='localhost';   
$DB_MYSQL['dbusername']='username';   
$DB_MYSQL['dbpassword']='password';   
$DB_MYSQL['dbname']='dbname';    
 ...
?>
mydb.php

PHP код:
<?php 
class myDB 

        var 
$hostname
        var 
$username
        var 
$password
         
        var 
$link
        var 
$result
         
        function 
myDB($hostname,$username,$password
        { 
                
$this->hostname=$hostname
                
$this->username=$username
                
$this->password=$password
        } 
        function 
Open() 
        { 
                
$this->link=@mysql_connect($this->hostname,$this->username,$this->password); 
                 
                if(!
$this->link
                { 
                        
$handle fopen("log.txt""a+"); 
                        
fwrite($handledate('d/m/Y H:i: ').mysql_error()."\r\n".$this->hostname."; ".$this->username."; 
"
.$this->password."\r\n---\r\n"); 
                        
fclose($handle); 
                } 
        } 
... 

?>
Далее в каком-либо файле скрипта из друго класса:

PHP код:
<?php 
require_once('common.php'); 

class 
CSessions 

        var 
$mydb
         
        function 
CSessions($DB_MYSQL
        { 
                
$this->mydb=new myDB($DB_MYSQL['dbhostname'],$DB_MYSQL['dbusername'],$DB_MYSQL['dbpassword']); 
                
$this->mydb->Open(); 
                
$this->mydb->SelectDB($DB_MYSQL['dbname']); 
        } 
... 

?>
В итоге время от времени получаем ошибку:

Can't connect to local MySQL server through socket '/tmp/mysql.sock'

И запись в log.txt (идет из mydb.php)

30/08/2006 00:24:
; ;
---

Т.е. класс myDB не получает данных из массива $DB_MYSQL
$DB_MYSQL['dbhostname']='localhost';
$DB_MYSQL['dbusername']='username';
$DB_MYSQL['dbpassword']='password';

В чем может быть причина. Повторюсь: такое бывает в 10% из 100. Но регулярно. Версия PHP 4.4.2

Очень надеюсь на помощь. Спасибо!
 
Старый 30.08.2006, 07:58     # 2
Naked
::VIP::
 
Аватар для Naked
 
Регистрация: 15.05.2005
Адрес: Питер
Сообщения: 1 194

Naked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked СэнсэйNaked Сэнсэй
я могу ошибаться, но если ты используешь массив $DB_MYSQL в какой-нибудь функции, то он там берется как локальный для функции, а чтобы он в функции был тоже глобальным, нужно в самой функции сделать:
public $DB_MYSQL;
точно не уверен, что правильно все понял, и правильно написал, но копать нужно в эту сторону...
__________________
Чтобы воля стала действующим началом, тело должно быть совершенным.
Naked вне форума  
Старый 30.08.2006, 11:12     # 3
Kvarx
Member
 
Регистрация: 26.09.2005
Адрес: Питер
Сообщения: 336

Kvarx Известность не заставит себя ждатьKvarx Известность не заставит себя ждать
Naked,
Наверняка так и есть.

winsov001
C классами на пхп еще не работал, только на С++. Возможно, что надо написать global $DB_MYSQL; Либо в классе CSessions или в функции.
Kvarx вне форума  
Старый 30.08.2006, 11:23     # 4
Псих
::VIP::
Guinness Liker
Понаехало тут
 
Аватар для Псих
 
Регистрация: 26.01.2003
Адрес: В нейроне
Пол: Male
Сообщения: 2 848

Псих СуперБогПсих СуперБог
Псих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБогПсих СуперБог
Цитата:
Naked:
public $DB_MYSQL;
Тут ты немного ошибся.. в 4 php нет такого понятися как public. Там все переменные и методы есть public.
Тут прав Kvarx, чтобы юзать переменную $DB_MYSQL внутри методов (функций) надо сделать
PHP код:
global $DB_MYSQL
__________________
меня не вылечат
Псих вне форума  
Старый 30.08.2006, 11:50     # 5
EvroStandart
Full Member
 
Аватар для EvroStandart
 
Регистрация: 20.01.2004
Адрес: Таллинн
Пол: Male
Сообщения: 623

EvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собойEvroStandart Имеются все основания чтобы гордиться собой
Цитата:
winsov001:
время от времени
Это как? При конкретном действии всегда? Или один раз сработает, второй раз нет?
А вообще, лучше сделать не массив, а отдельные переменные через define. Тогда точно везде их увидиш. Или клас с настройками и каждый раз к нему обращаться.
EvroStandart вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 15:27.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.