Kom ihåg mig?
Home Menu

Menu


Global variabel i PHP

 
Ämnesverktyg Visningsalternativ
Oläst 2005-05-07, 01:43 #1
void void är inte uppkopplad
Medlem
 
Reg.datum: Oct 2003
Inlägg: 124
void void är inte uppkopplad
Medlem
 
Reg.datum: Oct 2003
Inlägg: 124
Hej,

jag skulle vilja skapa en variabel som alla mina php-sidor ska ha tillgång till. Har aldrig gjort detta i PHP tidigare och efter lite sökande har jag inte hittat nåt svar.

I t ex JSP kan jag ju sätta scope till antingen request, page, session eller application. Det jag är ute efter är alltså det som motsvarar application fast i PHP.


mvh
Marcus
void är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-05-07, 01:55 #2
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Det är tyvärr inte helt trivialt, men det går via semaphores
http://docs.php.net/en/ref.sem.html
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-05-07, 15:33 #3
stakess avatar
stakes stakes är inte uppkopplad
Medlem
 
Reg.datum: May 2005
Inlägg: 219
stakes stakes är inte uppkopplad
Medlem
stakess avatar
 
Reg.datum: May 2005
Inlägg: 219
<?php
session_start();

$variabeln = ”data”;

session_register(”variabeln”);
?>

includera denna i index filen eller något liknande så finns variablen kvar tills användaren stänger ner webrowsern..

eller om du vill döda den själv :P

<?php
session_destroy();
?>


läs mer på php.net
stakes är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-05-07, 16:04 #4
void void är inte uppkopplad
Medlem
 
Reg.datum: Oct 2003
Inlägg: 124
void void är inte uppkopplad
Medlem
 
Reg.datum: Oct 2003
Inlägg: 124
Citat:
Originally posted by stakes@May 7 2005, 15:33
<?php
session_start();

$variabeln = ”data”;

session_register(”variabeln”);
?>

includera denna i index filen eller något liknande så finns variablen kvar tills användaren stänger ner webrowsern..

eller om du vill döda den själv :P

<?php
session_destroy();
?>


läs mer på php.net
Hur man använder en vanlig sessionsvariabel vet jag. Jag uttryckte frågan lite fel i första stycket, jag är inte ute efter en variabel som alla mina sidor har tillgång till, utan jag vill att alla användare ska ha tillgång till variabeln. Dvs en variabel som alla som använder applikationen har tillgång till, inte bara en person som är fallet med PHP och session.

Ska kika på det grazzy tipsade om, men det verkar inte helt trivialt.
void är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-05-07, 17:09 #5
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
PeterM PeterM är inte uppkopplad
Medlem
 
Reg.datum: Dec 2004
Inlägg: 56
Har inte haft anledning att testa själv, men mmCache/eAccelerator verkar ha funktioner som går att använda till detta.

Snabbt cut&paste från dokumentationen:

eaccelerator_put($key, $value, $ttl=0)
puts the $value into shared memory for $ttl seconds.

eaccelerator_get($key)
returns the value from shared memory which was stored by eaccelerator_put() or null if it is not exists or was expired.

eaccelerator_rm($key)
removres the $key from shared memory

eaccelerator_gc()
removes all expired keys from shared memory
PeterM är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-05-09, 09:20 #6
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
Hej,

Jag brukar alltid skapa en sida med konstanter som jag alltid inkluderar i alla nya sidor. I dessa konstanter sätter jag upp variabler som jag kommer att behöva runtom på sajten, t.ex. mysql-login etc..

I en ny fil constants.php
Kod:
<?php
define("THE_VARIABLE_NAME", "värdet-här");
?>
På varje ny sida inkluderar jag därefter constants.php och får på så sätt tillgång till alla konstanter.
Kod:
<?php
require("/utils/constants.php");
print THE_VARIABLE_NAME;
?>
Jag har funnit detta vara den smidigaste lösningen.. men smaken är som baken.
netflax är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-05-09, 13:18 #7
fasko fasko är inte uppkopplad
Medlem
 
Reg.datum: Apr 2005
Inlägg: 81
fasko fasko är inte uppkopplad
Medlem
 
Reg.datum: Apr 2005
Inlägg: 81
netflax's lösning är (mig veterligen) den enda vettiga om du har konstanter.
Är det variabeldags skulle jag ta en titt på om man inte kan använda en databas i kombination med antingen sessionsvariabler eller bara en databas (högre tryck på databasen då dock).

Om de lösningarna av någon anledning inte passar så är nästa lösning jag kommer att tänka på att spara värdet i en fil på nåt bra ställe (t ex variabel.txt). Sedan hämta info från filen när man behöver det.
Jag har inte så mkt erfarenhet av att hämta info från filer, säkerheten omkring o så. Men det går ju ganska fort och lätt att slänga in info i en fil i t ex sessionsvariabler om du behöver värdet ofta.
fasko är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-05-09, 13:24 #8
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Därför använder man sempahorer, det är resurssnålt, effektivt och tillverkat för just den här användningen. Att öppna en fil för att hämta ett värde känns inte särskilt optimalt. Inte heller att köra ett SQL-anrop.

Nåt i stil med detta borde funka:
$resource = sem_get(1); # hitta resurs-id till sempahore 1
shm_put_var($resource, 1, 'ett värde'); # spara 'ett värde' på plats 1 i semaphore 1

Nu kan man i alla andra instanser av programmet använda sig av:
$resource = sem_get(1); # hitta resurs-id till sempahore 1
shm_get_var($resource, 1); # hämta värde 1 från semaphore 1.

Om jag inte förstått något fel. En lite hjälp på vägen iaf.
grazzy är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-05-09, 13:50 #9
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
netflax netflax är inte uppkopplad
Medlem
 
Reg.datum: Aug 2004
Inlägg: 88
Smaken är som baken som sagt... den är delad.

Att använda semaforer i ett stort projekt kan lätt bli något svårbegripligt när det helt plötsligt står:

shm_get_var($resource, 654);

Vad är 654 för variabel? Självklart kan man då istället använda:

shm_get_var($resource, DATABASE_PASSWORD);

Men då behöver man har den konstanten på alla sidor, alltså inkluderad från en constants.php eller liknande ;)

Gör vilket du tycker verkar enklast...
netflax är inte uppkopplad   Svara med citatSvara med citat
Oläst 2005-05-09, 13:58 #10
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
grazzy grazzy är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Mar 2004
Inlägg: 3 471
Jag tror inte riktigt du har förstått skillnaden netflax. Heh, om du lagrar ett databaspassword i en semaphore? Den om nåt skulle kunna vara en konstant.

...
grazzy är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 22:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017