Selectbox met php function probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Paul IJmker

Paul IJmker

07/07/2013 01:16:15
Quote Anchor link
Ik heb momenteel op mijn website 6 selectboxen die gebruik maken van dezelfde functie. Het probleem is dat deze functie veel data bevat, en dus ook 6 keer wordt geladen met dezelfde data, waardoor vervolgens mijn website super traag wordt. Ik ben al een tijdje aan het kijken voor een oplossing, maar wat ik ook probeer, de selectbox moet eerst alle 6 keren die functie langs en dan pas is de website geladen.

functie.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
function lettertypeFont($fontname,$letterid) {
$google_webfonts = array('Arial','Comic Sans MS','Futura','Helvetica','Times New Roman','Trebuchet MS','Verdana', 'Questrial','Lekton','Rambla','Fresca','Denk One','Source Sans Pro','Orienta','Puritan','Dosis','Abel','Snippet','Share Tech','Mako','Seymour One','Ubuntu Mono','Droid Sans','Average Sans','Tauri','Jockey One','Signika Negative','Lato','Cabin','Inder','ABeeZee','BenchNine','Viga','Economica','News Cycle','Michroma','PT Sans','Acme','Andika','Anaheim','Armata','Duru Sans','Chau Philomene One','Syncopate','Cantora One','PT Sans Narrow','Ropa Sans','Cabin Condensed','Philosopher','Rum Raisin','Istok Web','Federo','Arimo','Quicksand','Paytone One','Oxygen Mono','Ubuntu','Gudea','PT Mono','Kite One','Droid Sans Mono','Wire One','Cagliostro','Tenor Sans','Magra','Montserrat Alternates','Josefin Sans','Wendy One','Carrois Gothic','Coda Caption','Port Lligat Sans','Rationale','Monda','Anton','Russo One','Source Code Pro','Convergence','Exo','Asap','Days One','Cantarell','Antic','Muli','Candal','Cousine','Ubuntu Condensed','Merriweather Sans','Sintony','Share Tech Mono','Roboto Condensed','Julius Sans One','Montserrat Subrayada','Oxygen','Englebert','Archivo Narrow','Titillium Web','Maven Pro','Carme','Cuprum','Scada','Orbitron','Strait','Galdeano','Aldrich','Capriola','Fjalla One','Asul','Open Sans Condensed','Montserrat','Oswald','Open Sans','Marmelad','Marvel','Doppio One','Gafata','Allerta','Raleway','Varela Round','Signika','Play','Bubbler One','Chivo','Jura','Dorsa','Hammersmith One','Pontano Sans','Archivo Black','Krona One','Quattrocento Sans','Francois One','Varela','Inconsolata','Ruda','Six Caps','Basic','Telex','Yanone Kaffeesatz','PT Sans Caption','Actor','Belleza','Nobile','Anonymous Pro','Ruluko','Advent Pro','Text Me One','Electrolize','Spinnaker','Molengo','Quantico','Homenaje','Voltaire','Amaranth','Carrois Gothic SC','Karla','Didact Gothic','Mouse Memoirs','Geo','Rosario','Shanti','Allerta Stencil','Nunito','Aclonica','Metrophobic','Numans','Roboto','Imprima');
$google_webfonts = str_replace('+', ' ', $google_webfonts);

<
div id="lettertype<?php echo $letterid ?>">
    
    foreach ($google_webfonts as $id => $fontitem) {
    
        <
input type="radio" id="lettertype<?php echo $letterid ?>_<?php echo $id ?>" name="update_<?php echo $fontname ?>" value="<?php echo $fontitem ?>"
        if(get_option('we_'.$fontname.'') == $fontitem){ ?>
checked <?php } ?> />
        
        <li>
            <label for="lettertype<?php echo $letterid ?>_<?php echo $id ?>"> > </label>
            <div style="font: 20px <?php echo $fontitem ?>, sans-serif !important; display:inline-block; margin-left: 10px; width:50%;"><?php echo $fontitem ?></div>
        </li>
        
    
    }
    
</div>
<?php
}
?>


</code>


Ik hoop dat iemand de oplossing of de duw in de goede richting voor me heeft. Eventueel een tip zou prettig zijn.

Toevoeging op 07/07/2013 01:19:33:

="Paul IJmker op 07/07/2013 01:16:15"]
Ik heb momenteel op mijn website 6 selectboxen die gebruik maken van dezelfde functie. Het probleem is dat deze functie veel data bevat, en dus ook 6 keer wordt geladen met dezelfde data, waardoor vervolgens mijn website super traag wordt. Ik ben al een tijdje aan het kijken voor een oplossing, maar wat ik ook probeer, de selectbox moet eerst alle 6 keren die functie langs en dan pas is de website geladen.

functie.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
function lettertypeFont($fontname,$letterid) {
$google_webfonts = array('Arial','Comic Sans MS','Futura','Helvetica','Times New Roman','Trebuchet MS','Verdana', 'Questrial','Lekton','Rambla','Fresca','Denk One','Source Sans Pro','Orienta','Puritan','Dosis','Abel','Snippet','Share Tech','Mako','Seymour One','Ubuntu Mono','Droid Sans','Average Sans','Tauri','Jockey One','Signika Negative','Lato','Cabin','Inder','ABeeZee','BenchNine','Viga','Economica','News Cycle','Michroma','PT Sans','Acme','Andika','Anaheim','Armata','Duru Sans','Chau Philomene One','Syncopate','Cantora One','PT Sans Narrow','Ropa Sans','Cabin Condensed','Philosopher','Rum Raisin','Istok Web','Federo','Arimo','Quicksand','Paytone One','Oxygen Mono','Ubuntu','Gudea','PT Mono','Kite One','Droid Sans Mono','Wire One','Cagliostro','Tenor Sans','Magra','Montserrat Alternates','Josefin Sans','Wendy One','Carrois Gothic','Coda Caption','Port Lligat Sans','Rationale','Monda','Anton','Russo One','Source Code Pro','Convergence','Exo','Asap','Days One','Cantarell','Antic','Muli','Candal','Cousine','Ubuntu Condensed','Merriweather Sans','Sintony','Share Tech Mono','Roboto Condensed','Julius Sans One','Montserrat Subrayada','Oxygen','Englebert','Archivo Narrow','Titillium Web','Maven Pro','Carme','Cuprum','Scada','Orbitron','Strait','Galdeano','Aldrich','Capriola','Fjalla One','Asul','Open Sans Condensed','Montserrat','Oswald','Open Sans','Marmelad','Marvel','Doppio One','Gafata','Allerta','Raleway','Varela Round','Signika','Play','Bubbler One','Chivo','Jura','Dorsa','Hammersmith One','Pontano Sans','Archivo Black','Krona One','Quattrocento Sans','Francois One','Varela','Inconsolata','Ruda','Six Caps','Basic','Telex','Yanone Kaffeesatz','PT Sans Caption','Actor','Belleza','Nobile','Anonymous Pro','Ruluko','Advent Pro','Text Me One','Electrolize','Spinnaker','Molengo','Quantico','Homenaje','Voltaire','Amaranth','Carrois Gothic SC','Karla','Didact Gothic','Mouse Memoirs','Geo','Rosario','Shanti','Allerta Stencil','Nunito','Aclonica','Metrophobic','Numans','Roboto','Imprima');
$google_webfonts = str_replace('+', ' ', $google_webfonts);
?>

<div id="lettertype<?php echo $letterid ?>">
    <?php
    foreach ($google_webfonts as $id => $fontitem) {
    ?>

        <input type="radio" id="lettertype<?php echo $letterid ?>_<?php echo $id ?>" name="update_<?php echo $fontname ?>" value="<?php echo $fontitem ?>"<?php
        if(get_option('we_'.$fontname.'') == $fontitem){ ?>
checked <?php } ?> />
        
        <li>
            <label for="lettertype<?php echo $letterid ?>_<?php echo $id ?>"> > </label>
            <div style="font: 20px <?php echo $fontitem ?>, sans-serif !important; display:inline-block; margin-left: 10px; width:50%;"><?php echo $fontitem ?></div>
        </li>
        
    <?php
    }
    ?>

</div>
<?php
}
?>


Ik hoop dat iemand de oplossing of de duw in de goede richting voor me heeft. Eventueel een tip zou prettig zijn.

Edit:
code-tags geplaatst om je codeblok. Gelieve dit voortaan zelf te doen in het vervolg, zo blijft het beter leesbaarder voor jouw en de anderen.
Alvast bedankt.
Gewijzigd op 07/07/2013 10:45:25 door - Ariën -
 
PHP hulp

PHP hulp

24/04/2024 19:13:43
 
Erwin H

Erwin H

07/07/2013 09:37:11
Quote Anchor link
Optie 1 is zo ongeveer regel 1: niet echoen vanuit een functie. Als je de functie een string terug laat geven kan je die string gewoon 6 maal echoen na de functie en hoef je hem dus al 5 keer minder uit te voeren.

Een andere vraag is waarom deze functie zo traag is. In eerste instantie lijkt dit gewoon een simpele loop door een array, die kan nooit zo traag zijn.
 
Paul IJmker

Paul IJmker

07/07/2013 11:37:31
Quote Anchor link
Ok, niet echo-en vanuit een functie. Ik heb alle echo's verwijderd echter nu geeft hij niets weer. Lijkt wel alsof het script niet in zijn geheel meer wordt geladen en of vastloopt op deze functie.

De reden waarom deze zo traag is, dit heb ik nagekeken in de broncode, dat ik in een array ongeveer 100 lettertypes heb staan. Deze worden allemaal in een aparte <li> geplaatst. Als ik het script start moet hij 600 x de <li> maken.

Ik hoop dat dit hiermee nog op te lossen is. Misschien moet ik AJAX gaan gebruiken om het script pas te laden waneer er daadwerkelijk op de selectbox geklikt gaat worden. Ik weet het even niet meer. Ik hoop op jullie hulp.
 
Erwin H

Erwin H

07/07/2013 14:37:42
Quote Anchor link
600 list items maken is echt geen probleem voor een server, dus ik kan me werkelijk niet voorstellen dat dat het probleem is. Verder moet je natuurlijk vanuit de functie dan wel al die list items teruggeven in 1 lange string en die string dan echoen op de momenten dat je al die list items wilt laten zien.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

07/07/2013 14:46:08
Quote Anchor link
Gewoon de functie één keer uitvoeren zoals Erwin zegt, als het al in een functie moet.
Maar de grootste traagheid ontstaat omdat je dus honderd verschillende fonts moet inladen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.