Anzahl der Variablen?

Alles, was PHP betrifft, kann hier besprochen werden.

Anzahl der Variablen?

Postby Makconner » 01. March 2006 09:13

Fall:
Meine Website erzeigt aus PHP und mysql_daten viele neue Seiten…
Der User wird die Seite viel nutzen (voraussichtlich) und damit nicht nur eine Seite aufmachen sondern etwa 20 Aufrufe Starten ( Schätzung, kann mehr sein)
Dann denke ich das es nicht nur ein User sein wird….

Problem? Ich habe mich mit einer Peron unterhalten, welche behauptete das ich da ein fettes Problem mit der Anzahl der Variablen bekommen werde. Da php diese begrenzt?
Worauf muss ich mich einstellen?
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 01. March 2006 09:19

Mir ist keine Begrenzung bekannt. Nebenbei hat ein Selbsttest ergeben, dass 20000 Session-Variablen keinerlei Probleme bereiten. Zudem: Wenn die User die Seite geöffnet haben, dann läuft das Script für die ja bereits garnicht mehr ;) Welche Variablen solls denn belegen, wenns garnicht läuft?
Soweit mir bekannt ist die Anzahl der Variablen pauschal erstmal nicht begrenzt. Sie wird aber langsfristig durch den Speicher begrenzt, was auch logisch ist, denn irgendwo müssen die Inhalte der Variablen schließlich hin.

Kannst der Person mal sagen, sie soll mir das Gegenteil beweisen ;) (Würd mich ja echt ma interessieren)
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 01. March 2006 09:33

Himmel... 20000 SESSION-Variablen.... was hast du gemacht?
Aber schonmal gut zu wissen....
Danke
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 01. March 2006 09:56

Ging auch genau um die Frage, ob Sessions begrenzt sind. Hab mir dann einfach ma ne for-Schleife zurecht gebastelt :)
Code: Select all
for ($i=1;$i<=20000;$i++) {
  $_SESSION[(string) $i] = "Test";
}
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 01. March 2006 11:40

jo verstehe... hab da noch was.. suche schon ne weile danach , wie man eine Variable in PHP fest deklariert...
also ich brauch die als INT also ganzzahl... ich weis das man alles reinfüllen kann, aber in dem Fall ist Int wichig.. ich weiss das es geht, hab ich schon irgendwo gelesen...
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby Wiedmann » 01. March 2006 13:12

Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby Makconner » 01. March 2006 13:57

Kann es ein das Modulo unter php sich ab einer bestimmten Zahlengröße völlig verrechnet?
Bei kleineren Zahlen ist das ja kein Problem und bei mir immer stimmig aber bei etwa 10 Stellen hab ich völlige Fehlberechnungen.

Ich schreibe an einer Funktion die einen Zeitstempel, in dem die Sekunden seit Cristus ( mit Schaltjahr) gerechnet sind wieder zurückrechnet in ein Stimmiges Datum.... da habe ich natürlich zahlen wie 63266354841 ... das ist heute gegen die Mittagstunden. Der Sinn ist das man mit jedem Datum gut rechnen kann.... und da hab ich nichts wirklich passendes für meine Ansprüche gefunden.

Bei der Rückrechnung mit Modulo spinnt der total rum....
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 01. March 2006 14:25

Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 01. March 2006 15:33

So.. ich hab’s geschafft…
Ich habe eine Funktion geschrieben die die Zeit seit Cristuns in Sekunden berechnet, dabei jedes Schaltjahr berücksichtigt.
Dazu eine Zweite die diese Zahl wieder umrechnen kann und in einer Ansprechenden Formatierung wieder sichtbar macht.
Ziel ist der Zeitstempel für den Eintag in einer Datenbank um auch damit zuverlässig rechnen zu können.
Die Funktion ist zusätzlich so gestaltet das man den Zeitstempel nach vorn oder zurückdatieren kann. So kann man Zielzeiten definieren.
Ich weiß das mir sehr oft vorgehalten wird das ich das Farad neu erfinde aber ich mach’s trotzdem, hab leider nichts gefunden was mir in der Art zusagen würde… Schaut euch das mal an und für Kritik bin ich zu haben…

Danke

<?php
print 'Zeitstempel: '.co_time_st(0,0,0,0,0);
print '<br>';
print 'Rückrechnung: '.co_time_ba(co_time_st(0,0,0,0,0));

/*
Ein Jahr ist ein Schaltjahr, wenn die Jahreszahl durch 4, aber nicht 100 teilbar ist (oder umgekehrt).
Ist das Jahr durch 400 teilbar, handelt es sich ebenfalls um ein Schaltjahr.
*/
// co_time_st(0,0,0,0,0) +Sekunden,+Minuten,+Stunden,+Tage,+Jahre
function co_time_st($tmp_pluss_s,$tmp_pluss_i,$tmp_pluss_G,$tmp_pluss_z,$tmp_pluss_Y)
{
$schalt = (date('Y')-date('Y')%4)/4; // jedes 4te Jahr
$schalt2 = (date('Y')-date('Y')%100)/100; // jedes 100te Jahr
$schalt3 = (date('Y')-date('Y')%400)/400; // jedes 400te Jahr
$schalttotal=$schalt-$schalt2+$schalt3;
$tmp_totaltime=
((date('s')+$tmp_pluss_s))+
((date('i')+$tmp_pluss_i)*60)+
((date('G')+$tmp_pluss_G)*60*60)+
((date('z')+$tmp_pluss_z+$schalttotal)*24*60*60)+
((date('Y')+$tmp_pluss_Y)*60*60*24*365)+$tmp_pluss;
return $tmp_totaltime;
}

function co_time_ba($zeit_stempel)
{
$schalt = (date('Y')-date('Y')%4)/4; // jedes 4te Jahr
$schalt2 = (date('Y')-date('Y')%100)/100; // jedes 100te Jahr
$schalt3 = (date('Y')-date('Y')%400)/400; // jedes 400te Jahr
$schalttotal=$schalt-$schalt2+$schalt3;
$zeit_stempel;
$tmp_jahreszeit_in_sek = (1*365*24*60*60);
$Jahr = (int) (($zeit_stempel-($schalttotal*24*60*60)) / $tmp_jahreszeit_in_sek);
$tmp_zwischenzeit = $zeit_stempel-($Jahr*$tmp_jahreszeit_in_sek+($schalttotal*24*60*60));
$Tage =1 + (int) ($tmp_zwischenzeit / (24*60*60));
$M1=31;
if(($Jahr %4)==0 and ($Jahr %100)<>0 and ($Jahr %400)==0)
{ $M2=29; } else { $M2=28; }
$M3=31; $M4=30; $M5=31; $M6=30; $M7=31; $M8=31; $M9=30; $M10=31; $M11=30; $M12=31;
if($Tage <= $M1)
{$Monat = 1;}
else if ($Tage <= ($M1+$M2))
{$Monat = 2;$Tage2 = $Tage - $M1;}
else if ($Tage <= ($M1+$M2+$M3))
{$Monat = 3; $Tage2 = $Tage - $M1-$M2;}
else if ($Tage <= ($M1+$M2+$M3+$M4))
{$Monat = 4; $Tage2 = $Tage - $M1-$M2-$M3;}
else if ($Tage <= ($M1+$M2+$M3+$M4+$M5))
{$Monat = 5; $Tage2 = $Tage - $M1-$M2-$M3-$M4;}
else if ($Tage <= ($M1+$M2+$M3+$M4+$M5+$M6))
{$Monat = 6; $Tage2 = $Tage - $M1-$M2-$M3-$M4-$M5;}
else if ($Tage <= ($M1+$M2+$M3+$M4+$M5+$M6+$M7))
{$Monat = 7; $Tage2 = $Tage - $M1-$M2-$M3-$M4-$M5-$M6;}
else if ($Tage <= ($M1+$M2+$M3+$M4+$M5+$M6+$M7+$M8))
{$Monat = 8; $Tage2 = $Tage - $M1-$M2-$M3-$M4-$M5-$M6-$M7;}
else if ($Tage <= ($M1+$M2+$M3+$M4+$M5+$M6+$M7+$M8+$M9))
{$Monat = 9; $Tage2 = $Tage - $M1-$M2-$M3-$M4-$M5-$M6-$M7-$M8 ;}
else if ($Tage <= ($M1+$M2+$M3+$M4+$M5+$M6+$M7+$M8+$M9+$M10))
{$Monat = 10;$Tage2 = $Tage - $M1-$M2-$M3-$M4-$M5-$M6-$M7-$M8-$M9;}
else if ($Tage <= ($M1+$M2+$M3+$M4+$M5+$M6+$M7+$M8+$M9+$M10+$M11))
{$Monat = 11;$Tage2 = $Tage - $M1-$M2-$M3-$M4-$M5-$M6-$M7-$M8-$M9-$M10;}
else if ($Tage <= ($M1+$M2+$M3+$M4+$M5+$M6+$M7+$M8+$M9+$M10+$M11+$M12))
{$Monat = 12;$Tage2 = $Tage - $M1-$M2-$M3-$M4-$M5-$M6-$M7-$M8-$M9-$M10-$M11;}
$tmp_zwischenzeit2 = $tmp_zwischenzeit - (($Tage-1)*24*60*60);
$Stunden = (int) ($tmp_zwischenzeit2 / (60*60));
$tmp_zwischenzeit3 = $tmp_zwischenzeit2 - $Stunden*60*60;
$Minuten = (int) ($tmp_zwischenzeit3 / 60);
$tmp_zwischenzeit4 = $tmp_zwischenzeit3 - $Minuten * 60;
$Sekunden = (int) $tmp_zwischenzeit4;
return $Tage2.'.'.$Monat.'.'.$Jahr.' '.$Stunden.':'.$Minuten.':'.$Sekunden ;
}
?>


Sicher kann man das eine Oder ander auch noch verkürzen und zugegeben ich hab etwas mit Variablen um mich geworfen.... aber so kann man das denke ich zur Ansicht erstmal überblicken
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 01. March 2006 16:07

Was spricht gegen den Standard-*nix-Timestamp time()?
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 01. March 2006 16:33

was meinst du genau? ich hab mit Time angeschaut aber so richtig hats mir nicht zugesagt...

oder was meinst du?
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 01. March 2006 16:43

time() gibt die Anzahl der Sekunden seit 1. Januar 1970 zurück, mit date() kannste es dann noch formatieren. Genau das, was du auf 100 Zeilen gekritzelt hast, bloss nich seit Jesu-Geburt ;)
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Makconner » 01. March 2006 17:31

ja ich hab das schon gesehen... aber einige der Zeitfunktionen hab ich da nicht finden können... sowas wíe (Zeitstempel + 4Stunden) in sekunden.. vielleicht hab ichs auch überlesen.... dazu kommt das ich bei date() auch mit z nur tage zwischen 0-365 bekomme.... da fehlt schaltjahr komplett...


und haben die Fetten Prifies keine Tips?
Sowas wie ".. das sollte man anders schreiben WEIL .... RECHNERLEISZUNG"


oder so?
User avatar
Makconner
 
Posts: 153
Joined: 14. February 2006 16:00

Postby KingCrunch » 01. March 2006 17:40

Code: Select all
$vierStundenSpeater = time() + 60 * 60 * 4;

Es handelt sich schließlich nur um banale Sekunden ;)
date berücksichtigt Schaltjahre übrigens. 0 bis 365 sind exakt 366 Tage ;) (der erste Januar ist Null)
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Wiedmann » 01. March 2006 19:26

sowas wíe (Zeitstempel + 4Stunden)

http://de.php.net/manual/en/function.strtotime.php
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 11 guests