Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kuorman jakaminen: ongelmana muuttujat

Wizard [22.08.2004 18:44:28]

#

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:

<?php

include 'http://palvelinB.domain.xxx/tiedosto.php?muuttuja=arvo';

// TÄSSÄ KOHTAA PITÄISI SITTEN SAADA KÄYTTÖÖN TUON TOISEN PALVELIMEN TIEDOSTON ARVOT

echo "Palvelimen B palauttamat muuttujat:";

?>

Tempfile [22.08.2004 19:17:39]

#

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:

<?php
$muuttuja = 0;
include "tiedosto1";

if($muuttuja) echo "toimi!"; // tulostaa 'toimi!'
?>

Wizard [22.08.2004 19:27:29]

#

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.

Tempfile [22.08.2004 19:47:10]

#

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?

Niko [22.08.2004 19:48:26]

#

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.

<?php
$array['muuttuja'] = 1;
echo serialize($array),'\n'; // tämän jälkeen mahdollisesti lisää
?>

toisella sitten

<?php
$filu = file('http://www.palvelin1.com/tiedosto.php');
$array = unserialize($filu[0]);
?>

jälkimmäinen on parempi.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta