FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
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 |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Klarade millennium-buggen
|
Det är tyvärr inte helt trivialt, men det går via semaphores
http://docs.php.net/en/ref.sem.html |
||
![]() |
![]() |
![]() |
#3 | |||
|
||||
Medlem
|
<?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 |
|||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Citat:
Ska kika på det grazzy tipsade om, men det verkar inte helt trivialt. |
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
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 |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
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"); ?> Kod:
<?php require("/utils/constants.php"); print THE_VARIABLE_NAME; ?> |
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
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. |
||
![]() |
![]() |
![]() |
#8 | ||
|
|||
Klarade millennium-buggen
|
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. |
||
![]() |
![]() |
![]() |
#9 | ||
|
|||
Medlem
|
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... |
||
![]() |
![]() |
![]() |
#10 | ||
|
|||
Klarade millennium-buggen
|
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.
... |
||
![]() |
![]() |
Svara |
|
|