Otsikosta jo hieman saakin selville mistä on kyse.
Eli tarkoitus on suorittaa tiettyjä PHP juttuja täysin toisella palvelimella kuin missä varsinainen järjestelmä sijaitsee.
Esim. varsinaiset tiedostot ovat palvelimella A ja jokin tietty scripti suoritetaan palvelimella B. Näihin siis suora osoitus esim. tyyliin http://palvelinB.domain.xxx.
Nyt on ongelmana sitten se, että kuinka saan tuolta palvelimelta B scriptin palauttaman taulukun takaisin palvelimelle A? Koodilla voisin selostaa hieman paremmin:
Meillä on siis palvelimalla A suoritettava php tiedosto jossa lukisi jotain seuraavaa:
Minkä tahansa includetun tiedoston sisällä määriteltyjen muuttujien pitäisi olla saatavilla myös kutsuvassa tiedostossa, joten homman pitäisi toimia ilman erillisiä hakuja, esim:
tiedosto1:
<?php $muuttuja = "1"; ?>
tiedosto2:
Pitää muistaa, että scripti suoritetaan täysin toisella palvelimella. Mietin, että jos palvelin B palauttaisi vain merkkijonon jollain tavalla palvelimelle A... En viitsisi alkaa tietokantaan väsäämään tuollaista sätöstä, koska nyt on vain kyse kahden palvelimen välisestä tietojen vaihdosta jotta saadaan asiakkaalle muodostettua yksi sivu.
Nythän ei päde mitkään yleiset muuttujien säännöt.
Nyt vasta erehdyin lukemaan tuon otsikonkin, tajusin heti homman paremmin. Näin ensikäsittämältä huomauttaisin että koneille tulevaa laskentaa ei saa includella jaetuksi(ainakaan php-tiedostoja käyttämällä), sillä silloin kone vain suorittaa toiselta palvelimelta haetun koodin. En oikein keksi keinoa, jolla toisen koneen saisi edes töihin, ehkäpä CGI-skiprit?
entäs sitten
Tiedosto 1: (es. http://www.palvelin1.com/tiedosto.php)
$muuttuja = 1; echo '<?php'; echo '$muuttuja = ',$muuttuja,';'; echo '?>';
Tiedosto 1: (es. http://www.palvelin2.com/tiedosto.php)
<?php include 'http://www.palvelin1.com/tiedosto.php'; ?>
tai sitten palvelimella 1 laitat arrayhyn tjsp. serialisoit sen.
toisella sitten
<?php $filu = file('http://www.palvelin1.com/tiedosto.php'); $array = unserialize($filu[0]); ?>
jälkimmäinen on parempi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.