php.de

Zurück   php.de > Webentwicklung > Software-Design

Software-Design Diskussionen auf Profi-Niveau: PHP Lösungen auf konzeptioneller Ebene

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
Alt 05.05.2011, 11:05  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von lstegelitz Beitrag anzeigen
So sind sie auf 64bit Betriebssysteme vorbereitet
Uiuiui, das ist mir jetzt peinlich. Da hatte ich mal wieder die ganzen Bytes gezählt, statt der halben. Natürlich war "%x016" gemeint. "Z_OBJ_HANDLE_PP(obj)" wäre mir aber ohnehin lieber ...

Geändert von fireweasel (05.05.2011 um 13:59 Uhr).
fireweasel ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.05.2011, 11:19  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.246
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von fireweasel Beitrag anzeigen
Uiuiui, das ist mir jetzt peinlich. Da hatte ich mal wieder die ganzen Bytes gezählt, statt der halben. Natürlich war "%x016" gemeint. "Z_OBJ_HANDLE_PP(obj)" wäre mir aber ohnehin lieber ...
Trotzdem hättest du mit dem Vertrag bei 64bit-Systemen ein Problem. Der Vertrag sagt: Der Hash muss EINDEUTIG sein. Ein reines %016x auf die Adresse im RAM ist nicht garantiert eindeutig. Deswegen diese "Magic". Was die Makros da tun, müsste man mal schauen, aber es scheint dadurch generell eindeutig zu werden.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 05.05.2011, 13:56  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von mepeisen Beitrag anzeigen
Trotzdem hättest du mit dem Vertrag bei 64bit-Systemen ein Problem. Der Vertrag sagt: Der Hash muss EINDEUTIG sein. Ein reines %016x auf die Adresse im RAM ist nicht garantiert eindeutig.
Wieso sollte die Adresse nicht eindeutig sein? Können sich zwei unterschiedliche PHP-Objekte eine Adresse teilen?
Möglicherweise war meine improvisierte sprintf-Anwendung da unpassend, ich wollte die Adresse und nicht die Daten, die sich dort befinden.

Ich würde sowieso die Objekt-ID, also Z_OBJ_HANDLE_PP() bevorzugen.

Geändert von fireweasel (05.05.2011 um 14:03 Uhr).
fireweasel ist offline   Mit Zitat antworten
Alt 05.05.2011, 14:16  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.246
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Die Adresse ist selbst eindeutig. Aber nicht als unsigned int darstellbar. Das war sie noch nie. Dazu müsste ich nun erklären, wie Adressierung in der Intel-Architektur funktioniert. Glaube mir einfach mal, dass auf 32Bit-Systemen die Adresse generell über 48Bit dargestellt wird. Auf 64 Bit-Systemen müssten das ebenfalls entweder 80 Bit oder mehr sein (Falls du nachschlagen willst: Zauberwort Selektor oder Far-Pointer vs. Near-Pointer). Theoretisch kann die Adresse mit 64Bit eindeutig sein (Programme arbeiten in der Regel nur mit einem Selektor für Code und einem zweiten für Heap), das garantieren, würde ich nicht wollen. Die eindeutige Adresse ist somit niemals so exakt über printf darstellbar, wenn man sich unabhängig von physiklaischer Adressierung des Speichers machen will. Es gibt Prozessorsysteme, da ist es noch komplizierter.
Genau aus diesem Grund, um die Abhängigkeit zur physikalischen Ausrichtung von Speicherbereichen zu vermeiden, sollte man niemals einfach so wortlos davon ausgehen, dass eine hexadezimale Ausgabe von Adressen eindeutig ist. Um Beispielsweise zu Debugging-Zwecken mal nachvollziehen was passiert, ist das OK. Mehr nicht. Es kann je nach Compiler bereits ein unterschiedliches Segment für Heap und Stack geben und schon hast du Probleme Adressen eins zu eins zu übersetzen. Dann kann die 64-Bit-Adresse 0x0001000200030004 unterschiedliche Speicherbereiche meinen, je nachdem ob sie mit Stack-Selektor oder Heap-Selektor geladen wird.
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 05.05.2011, 16:31  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Ojeh, wir kommen nicht nur vom Thema ab (tun wir?), es wird auch immer komplizierter. Lassen wir mal die Ausgabe und Umwandlung einer "Viel"-Bit-Integer-Zahl per sprintf() ausgeblendet oder nehmen einfach an, es könnte so funktionieren, wie mein unkompliziert gewebtes Gemüt sich das so vorstellt(e) ...

Zitat:
Zitat von mepeisen Beitrag anzeigen
Die Adresse ist selbst eindeutig. Aber nicht als unsigned int darstellbar. Das war sie noch nie. Dazu müsste ich nun erklären, wie Adressierung in der Intel-Architektur funktioniert. Glaube mir einfach mal, ...
Muss ich ja wohl, da mir größtenteils einfach das Verständnis für die verquere x86-Logik fehlt. Mit 68k und PPC kam|komme ich besser zurecht.

Zitat:
... dass auf 32Bit-Systemen die Adresse generell über 48Bit dargestellt wird. Auf 64 Bit-Systemen müssten das ebenfalls entweder 80 Bit oder mehr sein ...
Okay, dann machen wir das ganze halt ein paar Bits breiter. Das erschien mir aber (anfangs) immer noch vernünftiger, als mit Zufallsfunktionen (... mt_rand() ...) eine ID auszuwürfeln.

Zitat:
... (Falls du nachschlagen willst: Zauberwort Selektor oder Far-Pointer vs. Near-Pointer).
Zwischenruf: Wurde der umständliche Far-Near-Unfug nicht irgendwann in den Neunzigern abgeschafft? Zauberwort: Flat-Memory-Model?

Und das googeln nach deinen Zauberwörtern bringt für meinen Geschmack etwas zu viel archäologisch interessanten Kram hervor (Pattern wie "286" und "16 Bit" bspw.).
[1]

Zitat:
Theoretisch kann die Adresse mit 64Bit eindeutig sein (Programme arbeiten in der Regel nur mit einem Selektor für Code und einem zweiten für Heap), das garantieren, würde ich nicht wollen. Die eindeutige Adresse ist somit niemals so exakt über printf darstellbar, wenn man sich unabhängig von physiklaischer Adressierung des Speichers machen will.
Stimmt, zu eng gedacht. Physikalische Adressen sind nun mal keine logischen ... Address-Aliasing und der ganze Kram, wenn man segmentierte Speichermodelle benutzt.

Zitat:
... Es kann je nach Compiler bereits ein unterschiedliches Segment für Heap und Stack geben und schon hast du Probleme Adressen eins zu eins zu übersetzen. Dann kann die 64-Bit-Adresse 0x0001000200030004 unterschiedliche Speicherbereiche meinen, je nachdem ob sie mit Stack-Selektor oder Heap-Selektor geladen wird.
Sollte man nicht trotzdem annehmen können, dass PHP-Objekte (wie alle diese Zend-Val-Dinger) immer auf dem Heap alloziert werden? ...

Nein, jetzt werden's mir zu viele Annahmen, ... Z_OBJ_HANDLE_PP() und gut ist's.

--

[1] Falls hier noch wer mitliest, ein paar (für mich) interessante Google-Suchergebnisse, die irgendwie zum Thema (Speicher, Adressen usw.) passen:

http://www.ualberta.ca/CNS/RESEARCH/...sters/mem.html

http://stackoverflow.com/questions/4...t-memory-limit

http://blogs.technet.com/b/markrussi...1/3092070.aspx

Geändert von fireweasel (05.05.2011 um 16:36 Uhr).
fireweasel ist offline   Mit Zitat antworten
Alt 05.05.2011, 16:38  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 5.246
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblickmepeisen ist ein wunderbarer Anblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Mag sein, dass ich mit Far-Pointer und Near-Pointer die falschen Begrifflichkeiten verwendet habe. Das sind in der Tat Schlagworte aus der 16Bit Architektur. Das Grundprinzip dahinter wurde aber in x86 nie abgeschafft. Es gibt nach wie vor eine Art Segmentierung und auch die Selektoren. Aber ja, wir driften weit vom Thema ab
__________________
www.php-maven.org PHP und Maven vereint: Build/Deploy/Produktion/Konfiguration, Projekt Management, CI, PHPUnit, zahlreiche Frameworks
Twitter @ https://twitter.com/#!/mepeisen und Facebook @ http://t.co/DZnKSUih
mepeisen ist offline   Mit Zitat antworten
Alt 05.05.2011, 16:54  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 474
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von mepeisen Beitrag anzeigen
Mag sein, dass ich mit Far-Pointer und Near-Pointer die falschen Begrifflichkeiten verwendet habe. Das sind in der Tat Schlagworte aus der 16Bit Architektur. Das Grundprinzip dahinter wurde aber in x86 nie abgeschafft. Es gibt nach wie vor eine Art Segmentierung und auch die Selektoren.
Zur Einführung in die Thematik reicht(e) das aus. Ich kann schließlich selbst weitergoogeln und -lesen.

Zitat:
Aber ja, wir driften weit vom Thema ab
Aber niemand soll mehr behaupten, hier würde man auf naive Fragen keine ausführlichen Antworten bekommen.
fireweasel ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Website in OOP: Wie am besten vorgehen? GreenDelta PHP Einsteiger 13 29.01.2011 12:25
[Erledigt] OOP - Stil-Frage zur Objekterzeugung Baltasar PHP Tipps 2010 7 24.08.2010 17:39
OOP - Mysql Abfragen machen chief-thomson PHP Tipps 2010 10 10.06.2010 13:59
Einstieg in die OOP + Frage ob mein Gedankengang richtig ist Rikaan PHP Tipps 2010 5 19.04.2010 13:56
[Erledigt] Suche: OOP Code Jens P. Scriptbörse 9 24.03.2010 12:51
gleich oop lernen oder erst mal prozedural programmieren? Voltage PHP Tipps 2010 7 22.01.2010 16:46
Frage zu OOP Klassenplanung Yanko PHP Tipps 2010 3 21.01.2010 09:27
100% OOP wirklich sinnvoll ? Pehapeh PHP-Fortgeschrittene 31 04.12.2009 11:19
Was bringt OOP wenn Objekte nach jeder Seite sterben? majorbenks PHP Tipps 2009 9 18.11.2009 14:11
Eure Tipps/Hinweise/Empfehlungen zum Thema Modellierung und OOP ChillSn Off-Topic Diskussionen 1 30.09.2009 15:19
[Erledigt] OOP & PHP5 Buchempfehlung? boernard PHP Tipps 2009 2 26.02.2009 18:32
Wer hilft mir bei OOP? echo Beitragsarchiv 27 23.02.2009 16:12
OOP verstanden? stayInside PHP Tipps 2009 4 24.01.2009 02:57
MVC vs. herkömmliches OOP stayInside PHP Tipps 2008 5 26.11.2008 22:47

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php objekte verknüpfung löschen

Alle Zeitangaben in WEZ +2. Es ist jetzt 01:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum