13. november 2008 - 16:40
Der er
32 kommentarer og 1 løsning
hjælp til "Set-Cookie"
Hej jeg leder efter en ekspert der har forstand på Set-Cookie funktionen... Set-Cookie time_generated Cookie time_generated hvordan skærer man ned på tiden her..??
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
13. november 2008 - 16:50
#1
Hvad mener du helt præcist? Vil du angive hvor lang tid den satte cookie eksisterer? setcookie("NAVN", "VÆRDI", time() + 15 * 60); 15 er så antallet af minutter din cookie eksisterer. Du kan også vælge at sige at den skal slettes, når browseren lukkes: setcookie("NAVN", "VÆRDI"); Dette er PHP, men det fremgår ikke tydeligt af dit spørgsmål, hvilket programmeringssprog du skal bruge det i.
13. november 2008 - 17:05
#2
mit mål var at forkorte den tid det tager at sende cookien da det varer11-12 sekunder på nuværende tidspunkt og siden kan ikke vises før denne cookie er sendt
13. november 2008 - 17:06
#3
Hvis vi er i php, så bør du altid sætte en path også. <?php setcookie("cookienavn","vaerdi",0,"/"); ?> Her vil cookien eksistere fra rod af domain, så længe browservindue er åbent. <?php setcookie("cookienavn","vaerdi",(time()+3600),"/"); ?> cookien er i live en time <?php setcookie("cookienavn","vaerdi",(time()-3600),"/"); ?> cookien slettes, fordi dens levetid er i minus
13. november 2008 - 17:08
#4
ahh, så er det måske i javascript du skal sætte din cookie ? Men du mangler stadig at fortælle hvilket sprog du vil sætte cookien i?
13. november 2008 - 17:13
#5
sorry det er php.. sådan her ser det ud nu.. header("Content-type:text/html;charset=utf-8"); if (Navigator::isRequestedUnderLegalURI()){ $uri = Navigator::getUri(); //$page_config = new PageConfig($uri); $page_config = PageConfig::getPageConfig ($uri); // the Responder!!! if ($page_config->PageExists()){ $page_content = System::getPage($page_config); $time_generated = calc_microtime($t_generated); setcookie('time_generated', sprintf('%.3f', $time_generated)); echo $page_content; } elseif ($page_config->isADirecotryRequestedWithoutASlashAtTheEnd()){ header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently');// no such page in configuration header("Location: {$_SERVER['REQUEST_URI']}/"); echo "The requested resource is located under a different URL: {$_SERVER['REQUEST_URI']}/"; } elseif (System::doesParentUserPageExist($uri)) { $parent_uri = System::getUserPageParentURI($uri); $page_config = PageConfig::getPageConfig ($parent_uri); $passed_parameters_via_uri = substr($uri, strlen($parent_uri)); $_REQUEST['passed_parameters_via_uri'] = $passed_parameters_via_uri; $page_content = System::getPage($page_config); echo $page_content; } else{ // the 404 error case! header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');// no such page in configuration echo "404 Not Found"; } } else{ header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');// not configured to answer such request echo "The software is not configured to respond to requests of the following host: {$_SERVER['HTTP_HOST']}\n"; } ?>
13. november 2008 - 17:17
#6
Sikkert fordi du bør sætte cookie inden noget som helst output til browser. header("Content-type:text/html;charset=utf-8"); er f.eks. output til browser. Det kan fixes med ob_start() men er ikke nogen god løsning. ( Suger på serveren )
13. november 2008 - 17:19
#7
sådan her ser resultaterne ud i firebug.. Set-Cookietime_generated=11.056 CookiePHPSESSID=71a5969d52dfed3d097ad28c6b62c1a9; time_generated=7.954 det er jo totalt uacceptabelt :-)
13. november 2008 - 17:21
#8
kan du forklare lidt nærmere hvad jeg skal gøre så kan jeg lige lave en test og se om det går hurtigere
13. november 2008 - 17:23
#9
Jahhh, men det er jo garanteret php koden som laver griseriet! Den cookie der, er jo den som sættes ved <?php session_start(); // resten af scriptet ?> Og jeg kenderikke firebug! :O) Ej heller den kode som sætter cookien.
13. november 2008 - 17:26
#10
Altså, du viser ikke hvornår session_start() bruges. Men en cookie skal altid sættes før noget output til browser, som nævnt, og hvis cookien sættes efter output, er det skod kode!
13. november 2008 - 17:36
#11
bare glem fire det er bare et program der viser hvor lang tid hver enkelt del tager, og set-cookie tager næsten 12 sekunder og det er det jeg gerne vil have gjort hurtigere da siden ikke vises før cookien er lavet. Dette betyder at fra du taster url og til siden vises går der ca 15 sekunder og det er jo alt for meget. du får lige hele php koden: <?php function get_microtime() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } function calc_microtime($from = 0) { return get_microtime() - $from; } $t_generated = calc_microtime(); error_reporting(E_ALL); class TimeCalculator { var $start_time; var $caption; function TimeCalculator($caption) { $this->start_time = microtime(); $this->caption = $caption; } function getElapsedTime() { $end_time = microtime(); $elapsed_time = round($this->getFloatTime($end_time) - $this->getFloatTime($this->start_time), 3); echo "<b>{$this->caption}</b> was executed in <b>$elapsed_time</b> seconds <br>\r\n"; } function getFloatTime($time_str) { list($usec, $sec) = explode(" ", $time_str); return ((float)$usec + (float)$sec); } } define ('PATH_TO_SYSTEM_CLASS','system/core/System.php'); ////////////////////////////////////////////////////////////////// // // start of the script actions // ////////////////////////////////////////////////////////////////// require_once(PATH_TO_SYSTEM_CLASS); //if (file_exists('system/user-config/LocalSettings.php')) echo "file exists"; else "not"; System::loadSystemSettings ('system/user-config/DefaultSettings.php'); System::loadSystemSettings ('system/user-config/LocalSettings.php'); require_once('admin/lang/'. System::getSystemSettings ('LOCALE') .'.php');//ȀЋRË€ if (is_null(System::getSystemSettings('SITE_URL'))) { header("Location: install.php"); exit; } elseif (is_readable ("install.php")) { echo '<p>Your installation is temporarily disabled because the install.php file in the root of your' .' installation is still readable.<br> To proceed, please remove the file or change its mode to make' .' it non-readable for the Apache server process and refresh this page.</p>'; exit; } System::boot(); System::init(); header("Content-type:text/html;charset=utf-8"); if (Navigator::isRequestedUnderLegalURI()){ $uri = Navigator::getUri(); //$page_config = new PageConfig($uri); $page_config = PageConfig::getPageConfig ($uri); // the Responder!!! if ($page_config->PageExists()){ $page_content = System::getPage($page_config); $time_generated = calc_microtime($t_generated); setcookie('time_generated', sprintf('%.3f', $time_generated)); echo $page_content; } elseif ($page_config->isADirecotryRequestedWithoutASlashAtTheEnd()){ header($_SERVER['SERVER_PROTOCOL'] . ' 301 Moved Permanently');// no such page in configuration header("Location: {$_SERVER['REQUEST_URI']}/"); echo "The requested resource is located under a different URL: {$_SERVER['REQUEST_URI']}/"; } elseif (System::doesParentUserPageExist($uri)) { $parent_uri = System::getUserPageParentURI($uri); $page_config = PageConfig::getPageConfig ($parent_uri); $passed_parameters_via_uri = substr($uri, strlen($parent_uri)); $_REQUEST['passed_parameters_via_uri'] = $passed_parameters_via_uri; $page_content = System::getPage($page_config); echo $page_content; } else{ // the 404 error case! header($_SERVER['SERVER_PROTOCOL'] . ' 404 Not Found');// no such page in configuration echo "404 Not Found"; } } else{ header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');// not configured to answer such request echo "The software is not configured to respond to requests of the following host: {$_SERVER['HTTP_HOST']}\n"; } ?>
13. november 2008 - 17:38
#12
medmindre du selfølgelig kan se andre fejl som kan være skyld i den langsomme loadtid.. Jeg er lige på vej ud af døren er tilbage igen 20.30 ca glæder mig til at se om du kan hjælpe mig :-)
13. november 2008 - 17:46
#13
Well, umiddelbart, vil jeg tro at hvis du smider header("Content-type:text/html;charset=utf-8"); ind i hver af dine if() og UNDER setcookie() vil det virke hurtigere ? Men hvad der ellers er i andre includefiler aner jeg jo ikke.
13. november 2008 - 17:59
#14
du kan jo prøve at lave en enkelt side der kun sætter en cookie og så tage tid på det. Altså: <?php setcookie("TEST", "Smart!", time() + 15 * 60, '/'); ?>
13. november 2008 - 21:26
#15
Hej igen så er jeg tilbage :-) Måske er det lidt meget at be om men kan du lokkes til at placere den streng du skrev de steder hvor du mener den skal være, for jeg laver garanteret bare endnu mere rod i det. :-(
14. november 2008 - 19:14
#16
hey moddi100 er du her endnu? :-)
14. november 2008 - 21:00
#17
Ja. Var dog ikke sikker på om det var til mig du snakkede. Jeg ved ikke hvordan du måler hastigheden med firebug, men lav en ny php fil f.eks. test.php. [test.php] <?php setcookie("TEST", "Smart!", time() + 15 * 60, '/'); ?> Filen skal altså kun bestå af én enkelt linie, nemlig ovenstående. Så måler du med dit program (firebug) hvor hurtig/langsom den er om at sætte en session og smider resultatet herind. Hvis det tager 10 sek, kan vi jo se, at det er setcookie()-funktionen der tager lang tid, men tager det ikke så lang tid er det altså resten af dit script du skal kigge på.
14. november 2008 - 22:51
#18
showsource: Måske er det lidt meget at be om men kan du lokkes til at placere den streng du skrev de steder hvor du mener den skal være, for jeg laver garanteret bare endnu mere rod i det. :-( moddi100: umiddelbart går det rimelig hurtigtmed den fil du bad mig lave. ca. 0,5 sekund, så hvad er dit næste forslag..??
15. november 2008 - 00:06
#19
Derved kan vi altså konkludere at det ikke tager længere tid at sætte en cookie end normalt. Det er altså en anden del af dit script du skal kigge på. Det er ikke cookien der er tidsrøveren.
15. november 2008 - 07:54
#20
har du så nogen forslag der..??
15. november 2008 - 13:25
#21
Nej ikke rigtig. Men tidsrøveren ligger formodentlig i en af disse to funktioner: System::boot(); System::init(); Er det permanent du laver en tidstest på siden, eller er det noget du kun går lige nu når du tester? (F.eks. TimeCalculator()-classen som du aldrig bruger)
15. november 2008 - 14:27
#22
det er kun lige nu når jeg tester.. ved du noget om det showsource sagde mht. til at rykke header("Content-type:text/html;charset=utf-8"); ind i hver af dine if() og UNDER setcookie() vil det virke hurtigere ?
15. november 2008 - 15:12
#23
Vi aner jo ikke hvad der er i dine funktioner, der er måske også output til browser ? ( hvilket jeg tror er synderen er loadtid )
15. november 2008 - 15:35
#24
Jeg tror ikke det vil have nogen større effekt af flytte den headerlinje, men du kan jo altid prøve.
15. november 2008 - 15:55
#25
<ole> Prøv at lave din tidstest rundt om denne linje: $page_content = System::getPage($page_config); Formodentlig er det dér, tiden bliver slugt. Det er meget sandsynligt, du der foretager noget template- eller database-halløj, som er rygende ineffektivt - men det er umuligt at sige noget objektivt om, da du ikke viser de kritiske dele af din kode /mvh </bole>
15. november 2008 - 17:38
#26
showsource: jeg er ikke helt med. Jeg har vist hele koden der er ikke andet på php siden. hvad vil du have mig til at gøre.?? olebole: hvordan laver jeg en tidstest rundt om den linje du skriver..??
15. november 2008 - 17:53
#27
Jeg tror, du bør sætte dig ind i PHP, før du begynder at bruge det. Selvom man har hjælp fra Eksperten i baghånden, er man nødt til selv at have et minimum af viden om sproget, man ønsker at bruge =)
15. november 2008 - 17:56
#28
så du kan ikke forklare hvordan man laver en tidstest altså
15. november 2008 - 18:02
#29
Jo, men det giver ikke mening, at vi laver det hele for dig. Eksperten handler om hjælp til selvhjælp. Du er derfor nødt til at sætte dig grundigere ind i PHP =)
15. november 2008 - 18:04
#30
Du laver selv en tidstest, som koden er nu. Den kan du vel bare flytte =)
15. november 2008 - 18:10
#31
jeg laver ikke nogen tidstest jeg ser bare resultaterne i firebug
15. november 2008 - 18:16
#32
Aflæser firebug ikke bare den cookie der er lavet? For at lave en tidstest som olebole foreslår, skal du blot flytte denne linje: $t_generated = calc_microtime(); hen lige før: $page_content = System::getPage($page_config); Men jeg er helt enig med olebole. Du bør sætte dig ind i PHP når du laver sådan noget.
24. november 2008 - 20:29
#33
lukket
Kurser inden for grundlæggende programmering