Project

General

Profile

Σφάλματα #124

Online χρήστες σε shared hosting environments

Added by Yury Kherimyan almost 8 years ago. Updated over 7 years ago.

Status:
Νέα
Priority:
Χαμηλή
Assignee:
-
Target version:
-
Start date:
26/11/2013
Due date:
% Done:

0%

Estimated time:

Description

Αντιμετωπίζω το εξής πρόβλημα: Σε φρέσκια εγκατάσταση της πλατφόρμας, μου εμφανίζει 120 χρήστες online. Κάνοντας refresh διαπιστώνω πως το νούμερο αλλάζει συνεχώς και δεν ταιριάζει με τους αληθινούς online επισκέπτες. Με λίγο ψάξιμο είδα πως ο αριθμός αυτός βγαίνει μετρώντας τα session files. Το πρόβλημα είναι πως η δική μου εγκατάσταση είναι σε shared hosting environment και η default τιμή του session_save_path() είναι /tmp. Αποτέλεσμα, οι περισσότερες εφαρμογές στον server δεν αλλάζουν την τιμή αυτή και η συνάρτηση getOnlineUsers() στο main.lib.php στην σειρά 2416 μετράει τα session files όλων των εφαρμογών στον server.

Στην συνάρτηση session_save_path() μπορεί να δοθεί custom path, αλλά αναφέρονται διάφορα θεματάκια και στο php.net και σε διάφορα questions στο stackoverflow... Πρέπει να ερευνηθεί, αν θέλετε να υποστηρίζεται η μέτρηση online χρηστών σε shared hosting περιβάλλοντα.

Έκανα μερικές δοκιμές από άλλο domain και φόρτωσα το session του admin από το eclass, στο άλλο domain. Δεν υπάρχουν πολύ ευαίσθητες πληροφορίες αλλά δεν είναι "θέμα ασφαλείας" αυτό?

History

#1

Updated by Yannis Exidaridis almost 8 years ago

Πράγματι δεν το είχαμε σκεφτεί ότι σε shared hosting enviroments δεν θα λειτουργεί σωστά. Το κρατάμε ανοιχτό μέχρι να διερευνήσουμε τι μπορεί να γίνει σε τέτοιες περιπτώσεις.

#2

Updated by Yury Kherimyan over 7 years ago

  • Subject changed from Online χρήστες to Online χρήστες σε shared hosting environments
#3

Updated by Yury Kherimyan over 7 years ago

  • Priority changed from Κανονική to Χαμηλή
#4

Updated by Thanos Kyritsis over 7 years ago

Θα μπορούσαμε να ρίξουμε μια ματιά τί κάνουν όλα αυτά τα PHP forums (πχ phpBB, vBulletin, κλπ) και μπορούν και δείχνουν πόσοι είναι online σε μια δεδομένη χρονική στιγμή, για να πάρουμε ιδέες. Αν και πολύ φοβάμαι πως δε γίνεται σωστά χωρίς κώδικα που να γράφει σε πίνακα βάσης και να κρατάει ρητές εγγραφές για τα τρέχοντα logins.

#5

Updated by Yury Kherimyan over 7 years ago

Περίμενα να κάνει το link από το commit, αλλά δεν εμφανίζει τπτ από το http://hg.gunet.gr/openeclass από τις 6/2/2014 (χάλασε κάτι?)
Anyway στο εξής changeset: http://hg.gunet.gr/openeclass/rev/2e33234bdbb4, βελτιώνω τη κατάσταση αλλά το πρόβλημα δεν λύνεται πλήρως.
Το σχετικό commit message:

Little code change in getOnlineUsers. Checking only files starting with sess_ (SESSION files)
and if script executor is file's owner count them as an online user. In shared hosting enviroments (#124)
there are a lot of session files in /tmp but this way only those who belong to your package is counted.

Still not the best solution because if you have other applications in your hosting package, saving sessions
those will be counted too. However, number is (significantly) more accurate than before.

#6

Updated by Yannis Exidaridis over 7 years ago

Η αλλαγή με χρήση της getmyuid() δεν λειτουργεί σωστά. Ο λόγος είναι ότι το owner uid δεν είναι το ίδιο με το effective uid (δες και http://www.php.net/manual/en/function.getmyuid.php). Αφαίρεσα τον έλεγχο.

Also available in: Atom PDF