Αποσυμπίεση zip αρχείων με την php

Καταρχήν γιατί; Για τον απλό λόγο ότι οι εγκαταστάσεις – αναβαθμίσεις των γνωστών CMS και weblogs απαιτούν το upload ενός μεγάλου αριθμού αρχείων και φακέλων στον server όπου φιλοξενούνται. Το upload του κάθε ενός αρχείου είναι και ένα διαφορετικό session (connect, open port, transfer file, close port, disconnect – πολύ χοντρικά) με αποτέλεσμα να υπάρχει τεράστιο overhead για το ανέβασμα πολλών αρχείων. Αυτό πρακτικά γίνεται αντιληπτό από τον σημαντικά περισσότερο χρόνο που χρειάζεται το upload 100 αρχείων (συνολικού μεγέθους 3 ΜΒ για πάραδειγμα) απ’ ότι το upload ενός μεγάλου αρχείου 3MB. Το ίδιο ακριβώς ισχύει και κατά την αντιγραφή πολλών αρχείων από ένα σκληρό δίσκο σε ένα usb stick. Αν τα αρχεία ενσωματωθούν σε ένα archive (zip, rar κλπ) ο χρόνος αντιγραφής είναι δραματικά μικρότερος – ειδικά αν μιλάμε για πολλά αρχεία.

Γίνεται; Σαφώς και γίνεται. Λαμβάνοντας υπόψη τον χρόνο που χρειάζεται για να φέρει και να ανεβάσει την καινούργια έκδοση του wordpress το automatic upgrade plugin σε σχέση με τον χρόνο του upload από τον χρήστη, το κέρδος – σε χρόνο – πρέπει να είναι μεγάλο. (Και είναι πραγματικά μεγάλο, όπως θα εξηγήσω παρακάτω).

Πως; Το πρώτο μέρος που έψαξα ήταν το php.net. Δυστυχώς όμως η συνάρτηση ZipArchive::extractTo δεν κάνει τη δουλειά. Επόμενη στάση google. Σαν πρώτο αποτέλεσμα δίνει αυτό το post. Αυτό το script κάνει extract αλλά – όπως γράφει και ο δημιουργός του – δεν μπορεί να δημιουργήσει φακέλους που πιθανόν να υπάρχουν μέσα στο zip archive. Οπότε πάλι δεν μας κάνει. Τελικά μετά από αρκετό ψάξιμο βρήκα αυτό. Αυτό το script είναι ένα πραγματικά χρήσιμο εργαλείο το οποίο μπορεί να σου γλυτώσει πολύ χρόνο σε διαδικασίες εγκατάστασης – αναβάθμισης. Η δοκιμή που έκανα στο portal μου (που βασίζεται σε drupal) ήταν απολύτως επιτυχημένη ενώ το upgrade έγινε σε πολύ λιγότερο χρόνο από τα προηγούμενα upgrades. Συνιστάται ανεπιφύλακτα.

Υ/Γ. Γιατί να μην υπάρχει και ένα plugin για automatic drupal upgrade?

Διάβασα και μου άρεσαν [25/11/2008]

  • Παραβίαση του κοινοτικού δικαίου υποπτεύεται η Ευρωπαϊκη Επιτροπή στη συμφωνία Κυβέρνησης – Microsoft. Άρωμα νέου σκανδάλου;[via]
  • Συνεχίζεται ο πόλεμος στη δασκάλα του Μεγάλου Δέρειου[via].
  • Το θέμα των απλήρωτων εκπαιδευτικών στα ΙΕΚ της χώρα έφτασε στο press-room [via]. Εδώ δεν δίνουνε λεφτά στην υγεία, τους εκπαιδευτικούς των ΙΕΚ θα πληρώσουνε;
  • 10 tips για καλύτερη PHP [via].
  • Lunascape: 3 browser σε 1 [via]. Πολύ χρήσιμο για web developers, κρίμα που δεν έχει έκδοση για Linux. Αρκούμαστε στο ies4linux και στις linux εκδόσεις Firefox και Opera. Η Google μας χρωστάει ακόμη το Chrome.
  • “…Η κατάσταση της οικονομίας είναι τόσο κακή αυτό τον καιρό, που οι γυναίκες παντρεύονται πλέον από έρωτα…”.

    Απλά κορυφαίο!!!! (Από το άρθρο του Σπύρου Κομίνη “Εσύ, βιντεοσκοπείς τον οργασμό σου;” στο Κυριακάτικο Θέμα της 23/11/2008).

Διαβάζοντας αρχεία Excel (xls) με PHP

M$ ExcelΈνα πολύ μεγάλο κομμάτι της δουλειάς μου είναι η επεξεργασία αρχείων Excel. Για παράδειγμα αυτό τον καιρό μαζεύουμε παραγγελίες από όλα τα σχολεία του νησιού για τον αριθμό των βιβλίων της επόμενης σχολικής χρονιάς. Κάθε χρόνο τέτοια εποχή βρίσκομαι αντιμέτωπος με αρχεία από 23 Γυμνάσια και 18 Λύκεια τα οποία πρέπει να αθροίσω για να υπολογίσω την τελική παραγγελία. Όπως καταλαβαίνει κάποιος η δουλειά αυτή δεν είναι δύσκολη αλλά ΑΠΙΣΤΕΥΤΑ βαρετή. Έψαξα λοιπόν για το πως θα μπορούσε να γίνει αυτό αυτόματα και βρήκα αυτό το παλιό post του vrypan. Που ήταν αυτό τόσα χρόνια που βγάζω τα μάτια μου στα grids του Excel… Πανεύκολο και ακριβές. Μετά από μερικές ώρες δημιουργικής απασχόλησης έχω πλέον έτοιμο το προγραμματάκι που τα κάνει όλα αυτόματα και συμφέρει… Πολιτισμός… Κρίμα που το βρήκα τώρα που φεύγω. ΦΕΥΓΩ!!! Και το excelακι των μεταθέσεων που θα βγάλει το ΥΠΕΠΘ σε λίγες μέρες έτσι θα το διαβάσω 😛
P.S. Για εγγραφή σε excel υπάρχει το πολύ καλό Spreadsheet_Excel_Writer στο PEAR. Όσον αφορά το OpenOffice είναι open και έχει πολύ καλύτερη υποστήριξη για PHP.
Photo byFelipeArte