Install maker

Door Teun Beijers, 13 jaar geleden, 3.001x bekeken

Dit is versie 1.02 van mijn installatiescript. Het leest alle bestanden uit een directory, en zet de inhoud van ze in variabelen in een install.php bestand. Als je dat install.php bestand dan runt pakt het alle bestanden uit.

IK WEET DAT HET ALLEMAAL WAT BETER KAN, EN DAT ER NOG WAT BUGS INZITTEN, DEZE HAAL IK ER IN VOLGENDE VERSIES UIT

Geplande updates:
-Bugs eruit(met als belangrijkste submappen)
-Ook mysql databases aanmaken
-Suggesties?

Gesponsorde koppelingen

PHP script bestanden

  1. install-maker

 

Er zijn 21 reacties op 'Install maker'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
W W
W W
13 jaar geleden
 
0 +1 -0 -1
echo "ERROR"; << Daar kan een gebruiker wat mee..
Teun Beijers
Teun Beijers
13 jaar geleden
 
0 +1 -0 -1
Al gewijzigd pepijn :P
Storeman storeman
storeman storeman
13 jaar geleden
 
0 +1 -0 -1
Ik heb zelf ook iets dergelijks gemaakt, maar dan met behulp van een archive_class (oa ondersteunig voor zip). Bij het uitpakken is wordt er vervolgens een bestand gerund met queries. Mijn systeem werkt echter alleen voor updates.

Leuk begin, maar het kan wel iets netter dan dit.
PHP Newbie
PHP Newbie
13 jaar geleden
 
0 +1 -0 -1
opendir, fread, fwrite, reddir, fclose. Allemaal trage omslachtige functies. Kijk eens naar glob() en file_put_contents().
Jeffrey H
Jeffrey H
13 jaar geleden
 
0 +1 -0 -1
@PHP Newbie
En jij noemt global() een goede functie?
Kijk eens naar de snelheids verschillen, je kunt in PHP5 beter scandir() gebruiken Readdir blijkt sneller te zijn, want dat is zonder sorting. Glob gebruikt Patterns: Patterns zijn slomer dan de andere SPL functies. Zoals kijken of er een 9 in een string zit, en dan ereg gebruiken, precies dezelfde fout. Gebruik dan strstr() of zoiets.

@Teuneboon
En als je dan file_get_contents gebruikt, gebruik dan daarna ook file_put_contents, en niet fopen+fwrite. Houd je code een beetje constant.
En chr(10)? Of je gebruikt gewoon PHP_EOL.
Daan
Daan
13 jaar geleden
 
0 +1 -0 -1
en wat nou als er een .htaccess bestand in de directory staat?? Die wordt niet meegenomen ;)

Verder wel een leuk idee.. Maar is het niet handiger/makkelijker om een een zip-bestand te laten uitpakken, inclusief subdirectories?
Teun Beijers
Teun Beijers
13 jaar geleden
 
0 +1 -0 -1
@Tha Wizekid:
zal er eens naar kijken, en chr(10) is een enter.
@Daan:
Oja daan, zal ik fixen :P
En als dit wordt uitgebreid is dit zeker handiger, want dan kun je meteen mysql erbij doen
PHP Newbie
PHP Newbie
13 jaar geleden
 
0 +1 -0 -1
@Tha wizekid
Jij beweert dat glob trager is dan readdir? Voer dit script maar eens uit:

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
27
<?php
    $microtimeStart1
= microtime();
    
    foreach(glob('*.*') as $string)
    {

        //loop
    }
    
    $microtimeEind1 = microtime() - $microtimeStart1;
    
    $microtimeStart2 = microtime();
    
    if ($handle = opendir('.')) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
               //loop
            }
        }

        closedir($handle);
    }

    
    $microtimeEind2 = microtime() - $microtimeStart1;
    
    $verschil = $microtimeEind1 - $microtimeEind2;
    
    echo (($verschil < 0) ? 'Glob is '.$verschil.' sneller' : 'Readdir is '.$verschil.' sneller');
?>


En je zult zien dat glob sneller is. Daarnaast staat het natuurlijk een stuk netter in de code.

Ik heb die if-statements neergezet omdat je ze altijd nodig hebt ter controle. Je moet immers checken of de opendir() gelukt is.

Ik heb de code ook nog even zonder statements uitgevoerd, en ook dan is glob sneller:

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
<?php
    $microtimeStart1
= microtime();
    
    foreach(glob('*.*') as $string)
    {

        //loop
    }
    
    $microtimeEind1 = microtime() - $microtimeStart1;
    
    $microtimeStart2 = microtime();
    
    $handle = opendir('.');
    
    while (false !== ($file = readdir($handle))) {
           //loop
    }
    closedir($handle);
    
    $microtimeEind2 = microtime() - $microtimeStart1;
    
    $verschil = $microtimeEind1 - $microtimeEind2;
    
    echo (($verschil < 0) ? 'Glob is '.$verschil.' sneller' : 'Readdir is '.$verschil.' sneller');
?>


Je redenatie klopt dus niet ;-)
PHP erik
PHP erik
13 jaar geleden
 
0 +1 -0 -1
Wat zijn we toch weer mieren in hun kont aan het nemen. Ik bedoel aan het mierenneuken. Mijn mening is dat je readdir() links moet laten liggen en in 9999 van de 10000 gevallen beter glob() kunt gebruiken.

fopen() gebruik je voor streams, POST-requests, etc.

Oh, en ik zie totaal geen nut in dit geposte script, kan iemand mij uitleggen in welk theoretisch geval je dit zou willen kunnen gebruiken (want een praktisch geval lijkt me vrij sterk te bedenken)?
Mebus  Hackintosh
Mebus Hackintosh
13 jaar geleden
 
0 +1 -0 -1
@Het is een leuk idee.. Maar het moet gewoon beter uitgewerkt worden.. Denk aan zip/rar files uitpaken bestanden op hun plek neer zetten databases aanmaken enz enz..
Teun Beijers
Teun Beijers
13 jaar geleden
 
0 +1 -0 -1
@erik: Wat dacht je van: je hebt een script, wil het aan de klant leveren, de klant weet weinig van php. Nu is het enige wat hij hoeft te doen om het script te installeren install.php runnen en klaar.
W W
W W
13 jaar geleden
 
0 +1 -0 -1
@teuneboon, al mijn applicaties en websites die ik aan klanten aflever worden voor de klant geinstalleerd en getest op hun eigen server. Een install.php meeleveren en hopen dat alles werkt is niet de manier om je producten af te leveren.
Ki ma
ki ma
13 jaar geleden
 
0 +1 -0 -1
Quote:
Evert schreef op 25.11.2008 20:47
Een download van een systeem voor noobs. :-)

En de spelling kan er ook wat van.. ;)
Jeffrey H
Jeffrey H
13 jaar geleden
 
0 +1 -0 -1
@Pepijn
Uhh, hoe denk jij dan dat Joomla, Typo3, Drupal enz. worden afgeleverd??
Dit kan best handig zijn(Mits goed uitgewerkt) om bijv een installer te genereren uit een repository, en die dan te uploaden naar je webserver...

@PHP_Newbie
Probeer ze is in afzonderlijke scripts uit te voeren ;)
Terence Hersbach
Terence Hersbach
13 jaar geleden
 
0 +1 -0 -1
@Tha Wizekid

readdir is php-level
glob is system-level

ik weet toch wel zeker dat system-level veeeeeel sneller is
Robert Deiman
Robert Deiman
13 jaar geleden
 
0 +1 -0 -1
@Tha_Wizekid

Joomla, Typo3 en Drupal worden allemaal afgeleverd met een installer die een config.php aanmaakt met je database gegevens. (en evt. indien opgegeven) ook je FTP gegevens. Meer doet de installer niet.
Hij leest niet alle bestanden uit de directory, maar schrijft 1 bestand bij (of iig past deze aan) zodat er verbinding gemaakt kan worden met de database. Vervolgens maakt die alleen nog de tabellen aan (en evt. dus ook meer gegevens, die in de tabellen komen). Oftewel:

Setup:
- maakt 1 file met db-connection gegevens
- maakt tabellen aan in de database
- voegt in de tabellen inhoud toe (indien daarvoor gekozen)
- verwijdert zichzelf


Meer doet het niet, wat jij nu aan het doen bent is eigenlijk het inlezen van een heleboel bestanden in een directory.
Jeffrey H
Jeffrey H
13 jaar geleden
 
0 +1 -0 -1
@Terence, Robert
Ok, overtuicht, al zal hij op windows dan niet heelveel sneller draaien??
Dutch Caffeine
Dutch Caffeine
13 jaar geleden
 
0 +1 -0 -1
Gebruik voor de errors 1 van de volgende functies:

Exception
Gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

throw new Exception("Ik kan de map niet openen");

?>


trigger_error
Gebruik:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

trigger_error("Ik kan de map niet openen", E_USER_WARNING);

?>


Waarom het gebruik van 1 van deze functies:

Een voorbeeld:
Als ik dit script zal gebruiken, en heb geen map aangegeven waar hij de boel zal installeren, dan krijg ik in jou geval een lelijke error te zien.

Als je het gebruikt met deze functie, kan ik (of jij maakt het er bij) de error afhandelen en krijg ik dus een mooie error te zien.

Hoe het error afhandelen werkt, zoek in tutorials hier op phphulp.nl.

Mr. de Jong
Onbekend Onbekend
Onbekend Onbekend
13 jaar geleden
 
0 +1 -0 -1
Is dit echt nodig? Gewoon files als string in een andere file opslaan is niet echt goed, wat doe je met de headers, etc?
Ericbruggema x
ericbruggema x
13 jaar geleden
 
0 +1 -0 -1
Ik gebruik zelf PHP2HEX (dat ik zelf ooit heb geschreven)

http://php2hex.bruggema.nl/php2hexv2.5.php.txt

voor meer info en links; http://www.google.nl/search?hl=nl&q=php2hex&meta=
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
ToySoldier ZegIkNiet
ToySoldier ZegIkNiet
13 jaar geleden
 
0 +1 -0 -1
Waarom functie("$variable") ? Dat is nogal nutteloos

functie( $variable );

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. install-maker

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.