Προγραμματισμός

Διαχείριση συστήματος αρχείων με PHP

Έχω κάνει blog στο παρελθόν σχετικά με τη χρήση PHP στη γραμμή εντολών, αλλά δεν κάλυψα τη χρήση PHP για πρόσβαση στο σύστημα αρχείων σε αυτήν την ανάρτηση προς όφελος του μεγέθους της ανάρτησης blog. Χρησιμοποιώ αυτήν την ανάρτηση για να καλύψω ορισμένα από τα βασικά στοιχεία της διαχείρισης συστήματος αρχείων PHP.

Πολλοί από εμάς που γράφουμε και χρησιμοποιούν σενάρια το κάνουν για λειτουργίες που σχετίζονται με το σύστημα αρχείων. Σενάριο ενεργειών που εκτελούμε συνήθως στο σύστημα αρχείων. Συγκεκριμένα, συχνά εντοπίζουμε να αντιγράφουμε αρχεία, να μετονομάζουμε αρχεία, να καταργούμε αρχεία και να ανοίγουμε και να κλείνουμε αρχεία. Συχνά πρέπει να εκτελούμε συγκεκριμένη λογική βάσει ορισμένων χαρακτηριστικών αρχείων και καταλόγων. Θα ήταν δύσκολο να εξετάσουμε σοβαρά μια γλώσσα ως γλώσσα δέσμης ενεργειών χωρίς αξιοπρεπή υποστήριξη συστήματος αρχείων. Ευτυχώς, η PHP διαθέτει ενσωματωμένη υποστήριξη για τη διαχείριση του συστήματος αρχείων. Αυτή η υποστήριξη μπορεί να χρησιμοποιηθεί σε συνδυασμό με τη γραμμή εντολών PHP.

Το W3Schools.com είναι ένας αποδεδειγμένος πολύτιμος πόρος για την εκμάθηση τεχνολογιών Ιστού και η κάλυψη των λειτουργιών PHP Filesystem είναι ένα άλλο παράδειγμα αυτού. Η σελίδα μας υπενθυμίζει ότι οι λειτουργίες του συστήματος αρχείων PHP "αποτελούν μέρος του πυρήνα της PHP" και "σας επιτρέπουν την πρόσβαση και τον χειρισμό του συστήματος αρχείων." Το πιο σημαντικό, αυτή η σελίδα συνοψίζει επίσης λεπτομέρειες διαμόρφωσης συστήματος αρχείων PHP, λειτουργίες συστήματος αρχείων PHP και σταθερές συστήματος αρχείων PHP. Κάνοντας κλικ σε ένα όνομα συνάρτησης οδηγεί σε μια σελίδα με περισσότερες λεπτομέρειες σχετικά με αυτήν τη λειτουργία, καθώς και ένα παράδειγμα κώδικα PHP χρησιμοποιώντας αυτήν τη συνάρτηση. Επειδή θα καλύψω μόνο ένα υποσύνολο αυτών σε αυτήν την ανάρτηση, θα ήθελα να φροντίσω να αναφέρω αυτήν τη σελίδα W3Schools νωρίς.

Το ακόλουθο σενάριο, demoPhpFileSystemManagement.php, δείχνει πολλές από τις λειτουργίες της PHP για τον προσδιορισμό των πληροφοριών αρχείων. Παραθέτω ολόκληρο το σενάριο εδώ και στη συνέχεια αναπαράγω τμήματα του σεναρίου ξανά καθώς τα συζητάω.

demoPhpFileSystemManagement.php

#! / usr / bin / php 

Πριν πάω σε πιο λεπτομερή κάλυψη των λειτουργιών του συστήματος αρχείων PHP που χρησιμοποιούνται στο παραπάνω παράδειγμα, παρατήρησα το φόντο Java σε αυτόν τον κώδικα PHP. Για παράδειγμα, χρησιμοποίησα σχόλια σε στυλ Javadoc για τις συναρτήσεις στον κώδικα. Ευτυχώς, το PHPDocumentor σέβεται τα σχόλια τύπου Javadoc κατά τη δημιουργία τεκμηρίωσης κώδικα. Ο παραπάνω κώδικας καταδεικνύει επίσης τη διαφορά των συμβάσεων ονομασίας που έχω συνηθίσει στην Java (καμήλα καμήλας) και τις συμβάσεις ονομασίας της PHP (όλα τα πεζά ονόματα με λέξεις χωρισμένες με κάτω παύλες) όπως φαίνεται από τις συναρτήσεις PHP που επικαλούνται.

Το πρώτο μέρος του σεναρίου PHP παρέχει ένα απλό μενού γραμμής εντολών κειμένου που ζητά από το χρήστη να εισάγει επιλογές και ονόματα αρχείων και διαδρομές. Αυτό το απόσπασμα κώδικα δεν κάνει τίποτα το ίδιο με τις λειτουργίες του συστήματος αρχείων PHP, αλλά δείχνει την τυπική είσοδο και έξοδο PHP και τη δήλωση του διακόπτη PHP. Αυτό το πρώτο μέρος αναπαράγεται εδώ.

Μενού γραμμής εντολών και επεξεργασία εισόδου

{echo "\ nΠοια λειτουργία συστήματος αρχείων PHP θέλετε να εκτελέσετε; \ n \ n"; echo "1. Ανάλυση πληροφοριών διαδρομής αρχείου \ n"; echo "2. Αποκτήστε μια απόλυτη διαδρομή \ n"; echo "3. Λήψη μεγέθους αρχείου \ n"; echo "4. Αποκτήστε μέγεθος δίσκου και ελεύθερο χώρο \ n"; echo "5. Λήψη χρόνων αρχείων \ n"; echo "\ nΕίσοδος 0 για έξοδο \ n"; echo "\ n \ nΗ επιλογή σας:"; $ select = trim (fgets (STDIN)); } ενώ (! ($ Επιλογή == "0") || ($ Επιλογή == "1") || ($ Επιλογή == "2") || ($ Επιλογή == "3") || ( επιλογή $ == "4") || (επιλογή $ == "5"))); διακόπτης (επιλογή $) {case "1": echo "Enter a path file:"; $ filePath = trim (fgets (STDIN)); $ filePathInfo = parseFilePath ($ filePath); echo $ filePathInfo; Διακοπή; περίπτωση "2": echo "Enter path:"; $ filePath = trim (fgets (STDIN)); $ realPath = convertPathToAbsolute ($ filePath); echo $ realPath; Διακοπή; case "3": echo "Εισαγάγετε διαδρομή και όνομα αρχείου:"; $ filePath = trim (fgets (STDIN)); $ sizeOfFile = getSizeOfFile ($ filePath); Το echo "File". Το $ filePath. "έχει μέγεθος". $ sizeOfFile. "bytes."; Διακοπή; case "4": echo "Εισαγάγετε ετικέτα δίσκου:"; $ diskLabel = trim (fgets (STDIN)); $ diskSpace = getDiskSizeAndFreeSpace ($ diskLabel); $ percentFree = $ diskSpace [1] / $ diskSpace [0]; echo "Disk". $ diskLabel. "has". $ diskSpace [1]. "of". $ diskSpace [0]. "bytes free (" .round ($ percentFree * 100). "%)."; Διακοπή; case "5": echo "Εισαγάγετε ένα αρχείο στο οποίο επιθυμείτε πρόσβαση / αλλαγή / τροποποίηση χρόνων:"; $ filePath = trim (fgets (STDIN)); $ fileTimes = getFileTimes ($ filePath); Το echo "File". $ filePath. "έγινε τελευταία πρόσβαση στο". $ fileTimes [0]. ", άλλαξε τελευταία φορά στο". $ fileTimes [1]. ", και τροποποιήθηκε τελευταία φορά στο". $ fileTimes [2]; Διακοπή; περίπτωση "0": προεπιλογή: echo "\ n \ n"; έξοδος(); } 

Το υπόλοιπο του σεναρίου PHP περιέχει συναρτήσεις που χρησιμοποιούν και επιδεικνύουν τις λειτουργίες διαχείρισης συστήματος αρχείων PHP.

Η PHP παρέχει λειτουργίες για εύκολη πρόσβαση σε λεπτομέρειες διαδρομής αρχείου, όπως ο κατάλογος του αρχείου, το πλήρες όνομα του ίδιου του αρχείου, η επέκταση του αρχείου και το όνομα του αρχείου χωρίς επέκταση. Μερικά από αυτά παρουσιάζονται στο παραπάνω παράδειγμα στο parseFilePath συνάρτηση, η οποία αναπαράγεται στη συνέχεια. Η συνάρτηση εμφανίζει τις λειτουργίες βασικού ονόματος, ονόματος χρήστη και pathinfo της PHP.

Η PHP παρέχει πληροφορίες διαδρομής αρχείου

/ ** * Αναλύστε την παρεχόμενη διαδρομή αρχείου. Δείχνει τις ακόλουθες λειτουργίες PHP: * * - basename (): Παρέχει το βασικό τμήμα της διαδρομής αρχείων (όνομα αρχείου). * - dirname (): Τμήμα ονόματος καταλόγου της διαδρομής αρχείου. * - pathinfo (): Όλα τα στοιχεία της διαδρομής (όνομα βάσης, όνομα καταλόγου, επέκταση). * * @param $ filePath Διαδρομή αρχείου για ανάλυση. * @return Πληροφορίες διαδρομής αρχείου σε μία συμβολοσειρά. * / function parseFilePath ($ filePath) {echo "Parsing file path ...", $ filePath, "\ n"; $ fileBaseName = βασικό όνομα ($ filePath); $ fileDirectoryName = dirname ($ filePath); $ pathInfo = pathinfo ($ filePath); επιστροφή "Όνομα αρχείου:". $ fileBaseName. "\ nΟνομα καταλόγου:". $ fileDirectoryName. "\ nFileName:". $ pathInfo ['basename']. "\ nΟνομα καταλόγου:". $ pathInfo ['dirname']. " \ nΕπέκταση αρχείου: ". $ pathInfo ['extension']." \ n Όνομα αρχείου χωρίς επέκταση: ". $ pathInfo ['filename']; } 

Εμφανίζεται τώρα η έξοδος από την εκτέλεση των παραπάνω σε ένα παράδειγμα αρχείου.

Η PHP παρέχει μια χρήσιμη λειτουργία πραγματικής διαδρομής που παρέχει μια απόλυτη έκδοση μιας παρεχόμενης διαδρομής. Για παράδειγμα, θα επιλύσει τους μαλακούς συνδέσμους και τους σχετικούς καταλόγους για να επιστρέψει την απόλυτη διαδρομή. Αυτό αποδεικνύεται στο convertPathToAbsolute λειτουργία στο παράδειγμά μου (και αναπαράγεται στην επόμενη λίστα κωδικών).

Επίδειξη απόλυτων διαδρομών μέσω του realpath

/ ** * Μετατροπή της παρεχόμενης διαδρομής σε απόλυτη διαδρομή. * * @param $ filePath Η διαδρομή αρχείου θα γίνει απόλυτη. * @return Απόλυτη έκδοση της παρεχόμενης διαδρομής αρχείου. * / function convertPathToAbsolute ($ filePath) {echo "Μετατροπή διαδρομής αρχείου", $ filePath, "σε απόλυτη διαδρομή ... \ n"; επιστροφή realpath ($ filePath); } 

Το παραπάνω τμήμα του σεναρίου παράγει την ακόλουθη έξοδο.

Η PHP διευκολύνει τον προσδιορισμό του μεγέθους ενός αρχείου με τη σωστά ονομαζόμενη συνάρτηση filesize. Μου getSizeOfFile Η συνάρτηση το αποδεικνύει και παρατίθεται από μόνο του στην επόμενη λίστα κωδικών.

Λήψη μεγέθους αρχείου σε PHP

/ ** * Προσδιορίστε το μέγεθος του παρεχόμενου αρχείου. * * @param; $ filePath Path και όνομα αρχείου του οποίου το μέγεθος είναι απαραίτητο. * @return Μέγεθος αρχείου που υποδεικνύεται από την παρεχόμενη διαδρομή αρχείου και το όνομα (σε byte). * / function getSizeOfFile ($ filePath) {echo "Λήψη μεγέθους αρχείου", $ filePath, "... \ n"; επιστροφή μεγέθους αρχείων ($ filePath); } 

Ο κωδικός οδηγεί στην έξοδο που εμφανίζεται στην επόμενη εικόνα.

Η PHP διευκολύνει επίσης τη λήψη πληροφοριών χώρου στο δίσκο. Οι λειτουργίες disk_total_space και disk_free_space της PHP παρουσιάζονται στην παρακάτω λίστα κωδικών για τη λειτουργία getDiskSizeAndFreeSpace.

Μέγεθος δίσκου PHP και ελεύθερος χώρος

/ ** * Παρέχετε μέγεθος δίσκου και ελεύθερο χώρο στο δίσκο για τον παρεχόμενο δίσκο. * * @param $ diskLabel Ετικέτα δίσκου του οποίου το συνολικό μέγεθος και ο ελεύθερος χώρος πρέπει να παρέχονται *. * @return Σειρά δύο στοιχείων, το πρώτο από τα οποία είναι ο συνολικός χώρος στο δίσκο (σε byte) * και το δεύτερο από τα οποία είναι ελεύθερος χώρος στο δίσκο (σε byte). * / function getDiskSizeAndFreeSpace ($ diskLabel) {return array (disk_total_space ($ diskLabel), disk_free_space ($ diskLabel)); } 

Το παραπάνω παράδειγμα δεν δείχνει μόνο τις λειτουργίες disk_total_space και disk_free_space της PHP, αλλά αποδεικνύει επίσης τη χρήση της λειτουργίας πίνακα PHP για τη δημιουργία ενός πίνακα και την τοποθέτηση στοιχείων εντός του πίνακα σε μία μόνο δήλωση.

Η έξοδος αυτού του τμήματος του σεναρίου εμφανίζεται στη συνέχεια.

Η τελική συνάρτηση στο σενάριό μου είναι getFileTimes και σκοπός του είναι να δείξει τρεις μεθόδους PHP για πρόσβαση σε ημερομηνίες / ώρες που σχετίζονται με αρχεία. Συγκεκριμένα, παρουσιάζονται οι συναρτήσεις αρχείων, χρόνου αρχείων και χρόνου λειτουργίας.

Ώρες αρχείων PHP

$config[zx-auto] not found$config[zx-overlay] not found