Μεγάλο PHP script και επιπτώσεις στο server load

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Μεγάλο PHP script και επιπτώσεις στο server load

Δημοσίευση από philos » 02 Ιαν 2013 14:07

Εμπλουτίζω ένα php script το οποίο καταλήγει να είναι πολύ μεγάλο, αφού θέλω να χρησιμοποιείται μόνο ένα αρχείο php για όλες τις λειτουργίες. Δεν τίθεται θέμα δυσκολίας συντήρησης, αφού το script καλεί "hooks" (ακα plugins = πρόσθετα τμήματα κώδικα), από τη βάση δεδομένων - κάθε plugin αφορά ξεχωριστά σύνολα λειτουργιών.

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

Αναρωτιέμαι τι επιπτώσεις μπορεί να έχει στο server load (μνήμη κτλ) ένα μεγάλο σε μέγεθος script (ανεξάρτητα από τα τμήματα κώδικα που τρέχουν κάθε φορά).
Επίσης πόσα KB μπορεί να είναι ένα php script ώστε να θεωρηθεί "μεγάλο" σε σημείο ακαταλληλότητας;

ploupas
Δημοσιεύσεις: 60
Εγγραφή: 04 Νοέμ 2011 20:47
Επικοινωνία:

Μεγάλο PHP script και επιπτώσεις στο server load

Δημοσίευση από ploupas » 03 Ιαν 2013 02:33

Δεν είμαι κανένας ειδικός στην PHP, αλλά επειδή βάρεσαν τα keywords: load, php script size limitation.

Αρχικά η php είναι interpreted, και γι' αυτό ο δεξής τοίχος έχει ξεραμένα αίματα πχ μπορείς να γράψεις αυτό:

Κώδικας: Επιλογή όλων

<?php
if &#40;1>2&#41;
require_once &#40;"non_existant_filename.php"&#41;;
else
echo "lol";
?>
Και θα τυπώσει lol, like a boss, αν αλλάξεις την συνθήκη θα τυπώσει Fatal Error

Σχετικά με τον περιορισμό σε filesize κάτι πρέπει να έχει να κάνει με την πλατφόρμα αν είναι 32 ή 64 bit και το filesystem για το πόσα TB μπορεί να είναι. Αλλά στην πραγματικότητα το όριό σου είναι το memory_limit και το max_execution_time στο php.ini σου.

Κατά τ' άλλα: ναι βαριά χρήση comments σε μεγάλα php scripts μπορεί να ανεβάσει το execution time

Όσο για το "πόσα KB" δεν είναι τόσο άμεσος ο συσχετισμός, το θέμα είναι πόση μνήμη και cpu cycles χρησιμοποιούν κατά την εκτέλεση, για να το αναδιατυπώσω πόσα bytes χρειάζονται για ένα endless loop σε php;

Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Μεγάλο PHP script και επιπτώσεις στο server load

Δημοσίευση από philos » 06 Ιαν 2013 11:26

Σύμφωνα με το debug πλαίσιο του vBulletin, κάθε φόρτωση σελίδας γενικά στο site έχει memory usage 11.000KB εώς 14.000KB (το περισσότερο που έχω εντοπίσει), είναι πολλά;
Βέβαια μιλάμε για ένα site σε vBulletin με αρκετά πρόσθετα.
Ο server γενικά είναι καλός και έχει υψηλά τις ρυθμίσεις limits κτλ, αλλά το θέμα είναι ότι παρά αυτό το γεγονός, δεν θα ήθελα να τον επιβαρύνω πολύ.

ploupas
Δημοσιεύσεις: 60
Εγγραφή: 04 Νοέμ 2011 20:47
Επικοινωνία:

Μεγάλο PHP script και επιπτώσεις στο server load

Δημοσίευση από ploupas » 08 Ιαν 2013 17:48

Είναι πολλά αν ο server έχει πχ 128MB ram για την php σου και θες να εξυπηρετείς 10 ταυτόχρονους (κυριολεκτικά) επισκέπτες. Γενικά δεν είναι πολλά και δεν θα έπρεπε να είναι πολλά αφού μαθαίνουμε ότι μιλάμε για forum για την επιβάρυνση ρωτάς τον sysadmin, σαν τους 29 κατασκευαστές πλυντηρίων "Αυτός ξέρει".

Επίσης όσο με το καλό μεγαλώνει το φόρουμ μάλλον θα πρέπει να εστιάσεις στο database optimization
Pretending to be an LNMP administrator on various nodes

Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Μεγάλο PHP script και επιπτώσεις στο server load

Δημοσίευση από philos » 26 Ιαν 2013 01:23

Ένα php script, ας πούμε 310KB (+ κάποια include once) τι επιπτώσεις μπορεί να έχει; Πχ θέλει πολλή μνήμη;
Να σημειωθεί ότι το προαναφερθέν script θα τρέχει μικρά τμήματα κώδικα κάθε φορά, απλά για λόγους οργάνωσης θα ήθελα οι περισσότερες λειτουργίες (request do, post do) να είναι σε ένα αρχείο.
Επίσης όταν τρέχεις ένα php script, ανεξάρτητα των τμημάτων του κώδικα που εκτελούνται, ο server κάνει έλεγχο για συντακτικά λάθη' αυτό ανεβάζει πολύ το server load??

ploupas
Δημοσιεύσεις: 60
Εγγραφή: 04 Νοέμ 2011 20:47
Επικοινωνία:

Μεγάλο PHP script και επιπτώσεις στο server load

Δημοσίευση από ploupas » 26 Ιαν 2013 18:43

Δώσε λίγο root password και IP να σε πω


Ε μα τι να σε πω κι εγώ... 310KB php :o Μιλάς για καμμιά δεκαριά χιλλιάδες γραμμές κώδικα στο νερό, ποια οργάνωση;..

Απαντήσαμε ήδη σε αυτό το memory και το load εξαρτώνται από το τι κάνει.

Έχει επιπτώσεις αυτό που λέμε "άχρηστο overhead", ειδικά αν όπως λες δεν τρέχουν όλα συνέχεια, αν όμως χρησιμοποιείς αρκετά functions (μαντεύω) και τρέχεις PHP5.3 ο σκουπιδομαζευτής της PHP μπαίνει συνέχεια μέσα και βάζει τάξη, εδώ έχεις φυσικά τον λόγο no actual gain / slowdown λίγες/πολλές επαναλήψεις. Αλλά από τις προηγούμενες απαντήσεις σου δεν φαίνεται να είναι θέμα. Μπορείς να δεις το execution time αν δεν μπορείς να δεις load του server.

Αν ανησυχείς τόσο για το parse του αρχείου σου, αλλά και τον χρόνο εκτέλεσης. Αν αλλάζει σπάνια ή τρέχει κάνα εκατομμύριο φορές μέχρι να ξανααλάξει βάλε κάποιον opcode cacher.

Από εκεί και πέρα γυρνάμε στο ότι δίχως παραπάνω πληροφορίες η ερώτηση είναι σαν: "Θα τρέχει το PC μου που αγόρασα πέρσι αυτό το game?"

Τελικά λύσε μου και την απορία, κλεμμένο τον έχεις τον server και δεν θέλεις να σε πάρουν πρέφα; :P
Pretending to be an LNMP administrator on various nodes

Άβαταρ μέλους
philos
Δημοσιεύσεις: 264
Εγγραφή: 30 Αύγ 2007 23:32

Μεγάλο PHP script και επιπτώσεις στο server load

Δημοσίευση από philos » 27 Ιαν 2013 17:00

ploupas έγραψε:
Δώσε λίγο root password και IP να σε πω


Ε μα τι να σε πω κι εγώ... 310KB php :o Μιλάς για καμμιά δεκαριά χιλλιάδες γραμμές κώδικα στο νερό, ποια οργάνωση;..

Απαντήσαμε ήδη σε αυτό το memory και το load εξαρτώνται από το τι κάνει.

Έχει επιπτώσεις αυτό που λέμε "άχρηστο overhead", ειδικά αν όπως λες δεν τρέχουν όλα συνέχεια, αν όμως χρησιμοποιείς αρκετά functions (μαντεύω) και τρέχεις PHP5.3 ο σκουπιδομαζευτής της PHP μπαίνει συνέχεια μέσα και βάζει τάξη, εδώ έχεις φυσικά τον λόγο no actual gain / slowdown λίγες/πολλές επαναλήψεις. Αλλά από τις προηγούμενες απαντήσεις σου δεν φαίνεται να είναι θέμα. Μπορείς να δεις το execution time αν δεν μπορείς να δεις load του server.

Αν ανησυχείς τόσο για το parse του αρχείου σου, αλλά και τον χρόνο εκτέλεσης. Αν αλλάζει σπάνια ή τρέχει κάνα εκατομμύριο φορές μέχρι να ξανααλάξει βάλε κάποιον opcode cacher.

Από εκεί και πέρα γυρνάμε στο ότι δίχως παραπάνω πληροφορίες η ερώτηση είναι σαν: "Θα τρέχει το PC μου που αγόρασα πέρσι αυτό το game?"

Τελικά λύσε μου και την απορία, κλεμμένο τον έχεις τον server και δεν θέλεις να σε πάρουν πρέφα; :P
Το script το αναπτύσσω το localhost μου και ρωτάω προτού το εγκαταστήσω στον κανονικό server (όοταν έλθει η ώρα).
Επρόκειτο για προσθήκες σε υπάρχον script της μηχανής vBulletin το οποίο ήταν 140kb (4000 lines) απείραχτο, μαζί με include once κάποια αρχεία με functions τα οποία συνολικά έχουν 1200+1950+500 lines)..

... και του πρόσθεσα άλλες 3500 (+ άλλες 1000 το αρχείο με τις δικές μου functions) :roll:

Όταν λέω οργάνωση, εννοώ ότι θα ήθελα ο επισκέπτης να έβλεπε το ίδιο php αρχείο στη γραμμή διευθύνσεων. Γιατί στην ουσία μιλάμε για ένα section (με πολλές λειτουργίες προφανώς).
Δεν πειράζει, θα σκεφτώ κάποια καλά ονόματα και θα διαχωρίσω το script. :)

Το execution time από που το βλέπω; Είναι το Page Generation; Γιατί σε αυτό μου βγάζει 0,27925 seconds (memory usage περί τα 13.500kb), γενικά με τις 12.500 γραμμές κώδικα, φορτώνει γρήγορα η σελίδα στο localhost μου.

Ο server είναι φίλου και είναι αρκετά καλός γιατί φιλοξενεί κι άλλα site, αλλά πέρα από αυτό θέλω το script μου να είναι βελτιστωποιημένο.
Σε ευχαριστώ για τη βοήθεια και συγγνώμη αν οι ερωτήσεις μου είναι χαζές. :)

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες