Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Ile kb ma dana strona
szuki
post
Post #1





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 21.09.2012

Ostrzeżenie: (0%)
-----


Witam, próbuję napisać skrypt, który sprawdzi ile KB ma dany kod html. Mowa tutaj o samych znakach. Jak sensownie przeliczyć kb na znaki - by np. ustrzec się przed limitami dla przykładu allegro (65kB - limit opisu aukcji)? Aktualnie kombinuję coś w tym kierunku:

  1. $all = "tutaj jakiś kod html";
  2. $size = 65536 - strlen($all);
  3. if ($size< ...

Jednak nie wiem na ile to miarodajne, no i czy nie ma lepszej metody?
Pozdrawiam.

Ten post edytował szuki 9.12.2012, 22:32:33
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
wNogachSpisz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Gdyby zapomnieć na chwilę że pytasz konkretnie o allegro, to odpowiedź powinna brzmieć mniej więcej tak:
Na rozmiar transmisji wpływa kilka kwestii:

- Kodowanie, w UTF-8 każdy "znak" może mieć 8, 16, 32, 64 bajty.
W skrajnych przypadkach (przy braku normalizacji) każdy znak ma 64 bajty nawet gdy pochodzi z tablicy ASCII tongue.gif
- Kodowanie i kompresja http (gzip, chunked-transfer-encoding). Jedno zmniejsza a drugie zwiększa rozmiar transmisji.

Pytasz konkretnie o allegro, więc musiałbyś zacząć od ustalenia co allegro rozumie przez 65kb, bo rozumieć może kilka rzeczy, ale najpewniej jest to rozmiar w bajtach (ignorujący kodowanie). Jeśli tak to powinieneś zdecydować się na kodowanie ISO-8859-1, w którym każdy znak masz upchany w 8 bitach, a co za tym idzie możesz stworzyć większy opis smile.gif.
Oczywiście o ile allegro po drodze nie przekoduje opisu na swój system kodowania i dopiero wtedy policzy rozmiar..

Musisz to sprawdzić.

Ten post edytował wNogachSpisz 9.12.2012, 23:24:58
Go to the top of the page
+Quote Post
szuki
post
Post #3





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 21.09.2012

Ostrzeżenie: (0%)
-----


Allegro było tylko przykładem, no i swoją drogą nie podaje zbyt wielu informacj. Jednak sporo się dowiedziałem, dzięki.
Go to the top of the page
+Quote Post
Crozin
post
Post #4





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


@wNogachSpisz: mylisz bity i bajty, jak i również wprowadzasz w błąd pisząc o normalizacji (znak ASCII w UTF-8 nie może mieć 64-bitów).
@szuki: O ile tylko strlen nie zostało nadpisane przez mb_strlen (Google: PHP multibyte functions override) jest to najlepszy sposób na sprawdzenie wielkości tekstu (wyrażonej w bajtach). Mimo swojej nazwy, strlen zlicza ilość bajtów, nie znaków (a te, jak zauważył @wNogachSpisz mogą mieć więcej niż jeden bajt).
Go to the top of the page
+Quote Post
szuki
post
Post #5





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 21.09.2012

Ostrzeżenie: (0%)
-----


Czyli w takim razie najlepiej będzie skompresować kod, a dopiero później go przeliczyć. A czy białe znaki, nowa linia, itd. również wpływają na ilość bajtów?
Go to the top of the page
+Quote Post
Crozin
post
Post #6





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. Kompresja żądań HTTP nie ma tu absolutnie nic do rzeczy.
2. Białe znaki to takie same znaki jak i inne, a więc zajmują one miejsce.
Go to the top of the page
+Quote Post
szuki
post
Post #7





Grupa: Zarejestrowani
Postów: 39
Pomógł: 0
Dołączył: 21.09.2012

Ostrzeżenie: (0%)
-----


W takim razie rozumiem, że warto usunąć wszystkie zbędne spacje, znaki nowej linii - co samo w sobie będzie już optymalizacją wagi. Co jeszcze mogę zrobić?
Go to the top of the page
+Quote Post
wNogachSpisz
post
Post #8





Grupa: Zarejestrowani
Postów: 1 233
Pomógł: 87
Dołączył: 6.03.2009

Ostrzeżenie: (40%)
XX---


Pomyłka, chodziło oczywiście o 8,16,32,64 bity, nie bajty.
Nie może ascii siedzieć w 64 bitach? Kiedyś kombinowałem i chyba dało rade.. moge się mylić.
Go to the top of the page
+Quote Post
Crozin
post
Post #9





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


Nie, nie może. Chyba że skorzystałeś z UTF-32, ale tutaj mowa o ASCII/UTF-8.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 12:53