Giriş yapmadınız.

Duyuru

TÜRKÇE KİTAP DUYURUSU:
Laravel 5 : Laravel 5.1 Güzelliği (Türkçe)
Vue.js 2 : Vue.js 2 Majesteleri (Türkçe)

#1 30.09.2014 21:00:08

Pyrotoxin
Üye
Yer: İzmir
Kayıtlı: 26.02.2013
Mesajlar: 45
Website

[Çözüldü] Birden çok veritabanı ve sunucu ile çalışma

Merhaba geliştirdiğim bir sistemde yönetici panelini ayırıp ayrı sunucuya ön panelide müşteriye verip kendi sunucusuna kurdurarak işlem yaptırmak istiyorum.
Buradaki amacım sistemin kaynak kodlarını elimde tutarak bir nevi lisanslama yapmak.

Müşterilerin ana bilgilerini veri tabanı ve ftp bilgilerini panelin olduğu sunucuda tutuyorum. Kullanıcı giriş yaptığında sistem varsayılan veri tabanı olarak kullanıcının verdiği bilgileri baz almakta. Böylece dinamik bir veri tabanına bilgilerine sahip olmaktayım.

Dosya yöneticisi olarak elfinder kullanıyorum. Elfinderin kendi içersiinde doğrudan ftp bağlantısı yapma özelliği var buradan da genel dosya işlemlerini hallediyorum.
Önbellekleme sistemi olarak file cache kullanıyorum. Ana sıkıntımın oldugu kısımda burada doğmakta. Önbellekleme sisteminin kayıt işlemlerini nasıl karsı tarafın ftp adresine yapabilirim.
Not: php-ftp işlemi daha önce hiç yapmadım.

Edit:
Sistemin nasıl işlediğini ve bu işleyişi nasıl yaptım^^

Veri tabanı ayarlarım: (panel) verdiğim kodlarda tek bağlantı var.

'default' => 'genel',
'connections' => array(

		'genel' => array(
			'driver'    => '',
			'host'      => '',
			'database'  => '',
			'username'  => '',
			'password'  => '',
			'charset'   => '',
			'collation' => '',
			'prefix'    => '',
		),

		'panel' => array(
			'driver'    => 'mysql',
			'host'      => 'localhost',
			'database'  => 'panel',
			'username'  => 'root',
			'password'  => '',
			'charset'   => 'utf8',
			'collation' => 'utf8_general_ci',
			'prefix'    => '',
		),
	),

Veritabanı modelleri için eloquent kullandım. panel veri tabanında tek tablom var o tablodada müşterinin bağlantı bilgileri(veri tabanı, eposta, ftp) tutulmakta.

Müşteri panele baglanmak için müşteri kodu eposta ve şifre ile giriş yapmakta.
Müşteri kodu ile panel veri tabanına bağlanıp müşterinin bağlantı bilgilerini almakta bu bağlantı bilgilerine göre kullanıcı adı ve şifre müşterinin sunucucusundaki verita banından sorgulanmakta. Sonuca göre kullanıcı girişi yaptırılmakta.

Şöyle ki

$sunucu = \panel\sistem\SunucuModel::where('lisans', Input::get('lisans'))->first();

Config::set('database.connections.genel',array(
            'driver'    => $sunucu['vt_driver'],
            'host'      => $sunucu['vt_host'],
            'database'  => $sunucu['vt_database'],
            'username'  => $sunucu['vt_username'],
            'password'  => $sunucu['vt_password'],
            'charset'   => $sunucu['vt_charset'],
            'collation' => $sunucu['vt_collation'],
            'prefix'    => $sunucu['vt_prefix'],
        ));

        Config::set('laravel-elfinder::roots',array(
            array(
                'driver'  => 'FTP',
                'host'    => $sunucu['ftp_host'],
                'user'    => $sunucu['ftp_user'],
                'pass'    => $sunucu['ftp_pass'],
                'path'    => $sunucu['ftp_path'],
                'URL'     => $sunucu['ftp_URL'],
                'tmbPath' => $sunucu['ftp_tmbPath'],
                'tmbURL'  => $sunucu['ftp_tmbURL'],
                'tmpPath' => $sunucu['ftp_tmpPath'],
                'accessControl' => 'access',
                'imgLib'        => 'auto',
                'utf8fix'       => true,
                'mimeDetect'    => 'internal',
                'port'          => 21,
                'attributes'    => array(
                    array(
                        'read'    => true,
                        'write'   => true,
                        'locked'  => false
                    ),
                    array(
                        'read'    => true,
                        'write'   => true, 
                        'locked'  => true
                    )                           
                ),
                'archiveMimes' => array('application/x-7z-compressed'),
                'mode'          => 'passive',
            ))
        );

        Config::set('ftp::connections',array(
            'genel' => array(
                'host'     => $sunucu['ftp_host'],
                'username' => $sunucu['ftp_user'],
                'password' => $sunucu['ftp_pass'],
                'port'     => 21,
                'passive'  => false,
            ))
        );
// Daha sonrada standart giriş işlemi uygulanmakta
if (Auth::attempt(Input::only(array('eposta','sifre')))):

Ftp yükleme ve silme işlemleri için anchu/ftp paneketini kullandım.

Önbellekleme dosyalarını silme işlemi içinse küçük bir api oluşturdum. Api aracılıgı ile müşterinin web sitesine silmek istediği önbelleğin id curl ile post ediyorum gelen id ile de Cache::forget($id) şeklinde bitiriyorum. smile

bu şekilde sistemi sonlandırdım smile

Son düzenleyen Pyrotoxin (13.11.2014 05:59:18)

Çevrimdışı

Forum alt kısmı