Se on moro!
Piirrän PHP:n grafiikkatoiminnoilla pylväitä nettipalvelimen kävijätilastoista.
On yksi ongelma. Minulla on yksi index.php-tiedosto joka on esim. seuraavanlainen:
<html>
<body>
..
..
..
Tässä on tekstiä
..
..
<img src="chart.php">
</body>
</html>
Mikä olisi kätevin keino lähettää tästä index.php tiedostosta parametrit chart.php:lle? Haen tilastotiedot suoraan IIS:n lokitiedostoista jotka sitten näytän ensin tekstinä ja lisäksi olisi tarkoitus piirtää kuva tuo chart.php:n avulla.
Onko tässä muita keinoja kun lähettää tiedot URLissa tai käyttämällä väliaikaistiedostoja palvelimella?
Ei ole muita keinoja, käytä $_GET taulukkoa, eli URLin kautta haet tiedot.
Tai no, myös keksien tai sessioiden avulla voi antaa sille kuvalle tarvittavat tiedot.
Minkä takia etsit vaihtoehtoisia tapoja?
Tätä olen pohtinut siksi koska eikös URLeissa ole jokin maksimipituus noille tiedoille? Jos on paljon tietoa, meneekö kaikki tiedot silloinkin perille URLin perässä olevan muuttujan kautta?
Muistaakseni jotain 250 merkkiä oli suositus tai jotain. Kuitenkin, rajattomasti ei tietoa sillä kannata lähetellä.
Voit toki ulkoistaa ne parametrin erilliseen tiedostoon, josta sitten haet ne sekä index.php:lle että chart.php:lle.
Miksi sinne pitää tunkea niin mahdottomasti tietoa?
Kerro nyt millaista tietoa pusket sinne.
Suurin osa on kyllä pelkkää numerotietoa eli se vie paljoa tilaa, mutta sitten tulee myös merkkijonoja. Luulen että merkkijonon pituudeksi tulee ehkä jotain 500-1000 merkin välillä. Kokeilen nyt ensin miten se toimii, jos ei toimi mietin asiaa uudelleen.
Mikset tee funktioita, mikä luo kuvatiedoston ja palauttaa kuvan osoitteen (url)?
Tällöin parametrien lähettäminen on paljon yksinkertaisempaa, eikä kukaan muu kuin php-scripti pysty niitä luomaan.
esim.
function make_chart($par1, $par2, $par3, .......){ $filename = "chart_".md5($par1.$par2.$par3).".gif"; $parameters = array ($par1,$par2,$par3); if (!file_exist($filename)){ draw_chart($filename, $parameters); } return $filename; } echo '<img src="'.$make_chart.'">';
Tässä esimerkissä draw_chart() -funktio siis luo esim. gdlibraryllä kuvan ja tallentaa sen, $filename paikkaan.
ps.
testattu ja toimii hyvin.
Kaikkein parasta on se, että kuvat voi poistaa koska tahansa (esim. tyhjennetään erillinen kuvacache kerran kuussa/viikossa), ja funktio osaa luoda ne uudestaan, kun niitä tarvitaan.
Ärhg, kerro nyt mitä se tieto on, kävijöiden IP:tä? Lehmien lukumääriä? Jotain muuta, mitä?
Sitten vasta voin kertoa ratkaisun :)
Tuo Leben ehdotus taitaa kyllä olla sopivin tähän tilanteeseen.
Kiitos myös T.M.:lle avuntarjoamisesta.
Ohjelmointi onkin sitten pienempi juttu, mutta suunnittelu on vaikeampaa.
T.M. kirjoitti:
Ärhg, kerro nyt mitä se tieto on, kävijöiden IP:tä? Lehmien lukumääriä? Jotain muuta, mitä?
Sitten vasta voin kertoa ratkaisun :)
Harvemmin vaikuttaa vastaukseen. Yleensä yleispätevä vastaus toimii ohjelmoinnissa parhaiten.
VÄÄRIN!! Yleensä yleispätevä ratkaisu on huonompi ja optimoimattomampi kuin erikseen siihen tehtävään räätälöity ratkaisu.
Ohhoh, ei nyt sentään. Kultainen keskitie. Räätälöity on optimoidumpi, yleispätevä monikäyttöisempi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.