Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:46157 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 91002 invoked from network); 22 Nov 2009 05:16:39 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 22 Nov 2009 05:16:39 -0000 Authentication-Results: pb1.pair.com header.from=arraypad@googlemail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=arraypad@googlemail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain googlemail.com designates 209.85.219.226 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: arraypad@googlemail.com X-Host-Fingerprint: 209.85.219.226 mail-ew0-f226.google.com Received: from [209.85.219.226] ([209.85.219.226:50934] helo=mail-ew0-f226.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id E5/E1-11660-639C80B4 for ; Sun, 22 Nov 2009 00:16:39 -0500 Received: by ewy26 with SMTP id 26so872239ewy.23 for ; Sat, 21 Nov 2009 21:16:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:received:date:message-id:subject :from:to:content-type; bh=iCAaFs8BH4zzopuobkC1GbEm2akdqcYgvfVP3j00odY=; b=xnvzUu57pcFSgiMwzzGeX8glsQ/EPT2cDvq3RDsBeiQEJ8YxOvy+08j0SsPQyuHtdR 4jeqdQ+hQ85llpuY1OI1r2FqYDLeK7OszFG2VmIojoVaBOcompY/HDbfyNRUtZQJAPkC 3JwfTywS5Z9hG94jZlbsPfh6t5ChgxAXmKFNs= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=iYl9K0B+TjioXm3j9ITo1Zg2wzPwdbyY06W6g139F8TZQQ2CWzobQZOBJ74GY+pWpG M4Zy3Wt/s6qzmf3g8H4fMy24cknoCjuv9C9is6Vlm48I0oQfP3rqDVmLyjakALdH3fiu 1RcMLehl2eBuwv9Z+iphGBj2fHbqn3JAecWZw= MIME-Version: 1.0 Received: by 10.213.23.78 with SMTP id q14mr2049141ebb.80.1258866995907; Sat, 21 Nov 2009 21:16:35 -0800 (PST) Date: Sun, 22 Nov 2009 05:16:35 +0000 Message-ID: To: internals@lists.php.net Content-Type: multipart/mixed; boundary=000e0ce03ba21c4b870478eed0bf Subject: [PATCH] default session serialization From: arraypad@googlemail.com (Arpad Ray) --000e0ce03ba21c4b870478eed0bf Content-Type: multipart/alternative; boundary=000e0ce03ba21c4b7b0478eed0bd --000e0ce03ba21c4b7b0478eed0bd Content-Type: text/plain; charset=ISO-8859-1 Hi, Attached is a patch (against HEAD) which adapts the default ("php") session serializer to serialize the whole array using php_var_serialize instead of calling it once per element. This simplifies the serialization code, and allows unicode session keys, or even ascii keys containing the pipe character. However it would be a significant BC break, as old serialized session records would be unreadable after upgrading. We could mitigate this by providing a script to convert old session files. It also means the serialized data would be a few bytes larger per key, so there's definitely some weighing up to do. Any thoughts? Arpad --000e0ce03ba21c4b7b0478eed0bd Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Hi,

Attached is a patch (against HEAD) which adapts the default (&qu= ot;php") session serializer to serialize the whole array using php_var= _serialize instead of calling it once per element.

This simplifies t= he serialization code, and allows unicode session keys, or even ascii keys = containing the pipe character.

However it would be a significant BC break, as old serialized session r= ecords would be unreadable after upgrading. We could mitigate this by provi= ding a script to convert old session files.

It also means the serial= ized data would be a few bytes larger per key, so there's definitely so= me weighing up to do.

Any thoughts?

Arpad

--000e0ce03ba21c4b7b0478eed0bd-- --000e0ce03ba21c4b870478eed0bf Content-Type: text/x-diff; charset=US-ASCII; name="php6-session-encode.patch" Content-Disposition: attachment; filename="php6-session-encode.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g2bcsuii0 SW5kZXg6IGV4dC9zZXNzaW9uL3Nlc3Npb24uYwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBleHQvc2Vzc2lvbi9z ZXNzaW9uLmMJKHJldmlzaW9uIDI5MTEyNCkKKysrIGV4dC9zZXNzaW9uL3Nlc3Npb24uYwkod29y a2luZyBjb3B5KQpAQCAtNzgzLDQ1ICs3ODMsMTAgQEAKIHsKIAlzbWFydF9zdHIgYnVmID0gezB9 OwogCXBocF9zZXJpYWxpemVfZGF0YV90IHZhcl9oYXNoOwotCVBTX0VOQ09ERV9WQVJTOwogCiAJ UEhQX1ZBUl9TRVJJQUxJWkVfSU5JVCh2YXJfaGFzaCk7CisJcGhwX3Zhcl9zZXJpYWxpemUoJmJ1 ZiwgJlBTKGh0dHBfc2Vzc2lvbl92YXJzKSwgJnZhcl9oYXNoIFRTUk1MU19DQyk7CiAKLQlQU19V RU5DT0RFX0xPT1AoCi0JCWlmICghc3RydWMpIHsKLQkJCXNtYXJ0X3N0cl9hcHBlbmRjKCZidWYs IFBTX1VOREVGX01BUktFUik7Ci0JCX0KLQotCQlpZiAoa2V5X3R5cGUgPT0gSEFTSF9LRVlfSVNf U1RSSU5HKSB7Ci0JCQlpZiAobWVtY2hyKGtleS5zLCBQU19ERUxJTUlURVIsIGtleV9sZW5ndGgp KSB7Ci0JCQkJUEhQX1ZBUl9TRVJJQUxJWkVfREVTVFJPWSh2YXJfaGFzaCk7Ci0JCQkJc21hcnRf c3RyX2ZyZWUoJmJ1Zik7Ci0JCQkJcmV0dXJuIEZBSUxVUkU7Ci0JCQl9Ci0JCQlzbWFydF9zdHJf YXBwZW5kbCgmYnVmLCBrZXkucywga2V5X2xlbmd0aCk7Ci0JCX0gZWxzZSB7Ci0JCQkvKiBIQVNI X0tFWV9JU19VTklDT0RFICovCi0JCQljaGFyICpzdHIgPSBOVUxMOwotCQkJaW50IGxlbjsKLQkJ CVVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotCi0JCQl6ZW5kX3VuaWNvZGVfdG9f c3RyaW5nX2V4KFVHKHV0ZjhfY29udiksICZzdHIsICZsZW4sIGtleS51LCBrZXlfbGVuZ3RoLCAm c3RhdHVzKTsKLQkJCWlmIChVX0ZBSUxVUkUoc3RhdHVzKSB8fCBtZW1jaHIoc3RyLCBQU19ERUxJ TUlURVIsIGtleV9sZW5ndGgpKSB7Ci0JCQkJUEhQX1ZBUl9TRVJJQUxJWkVfREVTVFJPWSh2YXJf aGFzaCk7Ci0JCQkJc21hcnRfc3RyX2ZyZWUoJmJ1Zik7Ci0JCQkJaWYgKHN0cikgeyBlZnJlZShz dHIpOyB9Ci0JCQkJcmV0dXJuIEZBSUxVUkU7Ci0JCQl9Ci0JCQlzbWFydF9zdHJfYXBwZW5kbCgm YnVmLCBzdHIsIGxlbik7Ci0JCQllZnJlZShzdHIpOwotCQl9Ci0JCXNtYXJ0X3N0cl9hcHBlbmRj KCZidWYsIFBTX0RFTElNSVRFUik7Ci0KLQkJaWYgKHN0cnVjKSB7Ci0JCQlwaHBfdmFyX3Nlcmlh bGl6ZSgmYnVmLCBzdHJ1YywgJnZhcl9oYXNoIFRTUk1MU19DQyk7Ci0JCX0KLQkpOwotCiAJaWYg KG5ld2xlbikgewogCQkqbmV3bGVuID0gYnVmLmxlbjsKIAl9CkBAIC04MzUsNjEgKzgwMCw1NyBA QAogCiBQU19TRVJJQUxJWkVSX0RFQ09ERV9GVU5DKHBocCkgLyoge3t7ICovCiB7Ci0JY29uc3Qg Y2hhciAqcCwgKnE7Ci0JY2hhciAqbmFtZTsKIAljb25zdCBjaGFyICplbmRwdHIgPSB2YWwgKyB2 YWxsZW47Ci0JenZhbCAqY3VycmVudDsKLQlpbnQgbmFtZWxlbjsKLQlpbnQgaGFzX3ZhbHVlOwor CXp2YWwgKipjdXJyZW50LCAqc3RvcmFnZTsKKwl6c3RyIG5hbWU7CisJdWludCBuYW1lbGVuOwor CXplbmRfdWNoYXIgdXR5cGU7CisJdWxvbmcgbnVtX2tleTsKIAlwaHBfdW5zZXJpYWxpemVfZGF0 YV90IHZhcl9oYXNoOworCUhhc2hQb3NpdGlvbiBwb3M7CiAKKwlpZiAoIXZhbGxlbikgeworCQly ZXR1cm4gU1VDQ0VTUzsKKwl9CisKIAlQSFBfVkFSX1VOU0VSSUFMSVpFX0lOSVQodmFyX2hhc2gp OworCUFMTE9DX0lOSVRfWlZBTChzdG9yYWdlKTsKIAotCXAgPSB2YWw7CisJaWYgKCFwaHBfdmFy X3Vuc2VyaWFsaXplKCZzdG9yYWdlLCAoY29uc3QgdW5zaWduZWQgY2hhciAqKikmdmFsLCAoY29u c3QgdW5zaWduZWQgY2hhciAqKWVuZHB0ciwgJnZhcl9oYXNoIFRTUk1MU19DQykgfHwgWl9UWVBF X1Aoc3RvcmFnZSkgIT0gSVNfQVJSQVkpIHsKKwkJenZhbF9wdHJfZHRvcigmc3RvcmFnZSk7CisJ CVBIUF9WQVJfVU5TRVJJQUxJWkVfREVTVFJPWSh2YXJfaGFzaCk7CisJCXJldHVybiBGQUlMVVJF OworCX0KIAotCXdoaWxlIChwIDwgZW5kcHRyKSB7CisJemVuZF9oYXNoX2ludGVybmFsX3BvaW50 ZXJfcmVzZXRfZXgoWl9BUlJWQUxfUChzdG9yYWdlKSwgJnBvcyk7CisJd2hpbGUgKHplbmRfaGFz aF9nZXRfY3VycmVudF9kYXRhX2V4KFpfQVJSVkFMX1Aoc3RvcmFnZSksICh2b2lkICoqKSZjdXJy ZW50LCAmcG9zKSA9PSBTVUNDRVNTKSB7CiAJCXp2YWwgKip0bXA7Ci0JCWhhc192YWx1ZSA9IDE7 CisJCXp2YWxfYWRkX3JlZihjdXJyZW50KTsKIAotCQlxID0gcDsKLQkJd2hpbGUgKCpxICE9IFBT X0RFTElNSVRFUikgewotCQkJaWYgKCsrcSA+PSBlbmRwdHIpIGdvdG8gYnJlYWtfb3V0ZXJfbG9v cDsKKwkJc3dpdGNoICh6ZW5kX2hhc2hfZ2V0X2N1cnJlbnRfa2V5X2V4KFpfQVJSVkFMX1Aoc3Rv cmFnZSksICZuYW1lLCAmbmFtZWxlbiwgJm51bV9rZXksIDAsICZwb3MpKSB7CisJCQljYXNlIEhB U0hfS0VZX0lTX1NUUklORzoKKwkJCQl1dHlwZSA9IElTX1NUUklORzsKKwkJCQlicmVhazsKKwkJ CWNhc2UgSEFTSF9LRVlfSVNfVU5JQ09ERToKKwkJCQl1dHlwZSA9IElTX1VOSUNPREU7CisJCQkJ YnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWdvdG8gc2tpcDsKIAkJfQogCi0JCWlmICgqcCA9PSBQ U19VTkRFRl9NQVJLRVIpIHsKLQkJCWlmICgrK3AgPj0gZW5kcHRyKSBnb3RvIGJyZWFrX291dGVy X2xvb3A7Ci0KLQkJCWhhc192YWx1ZSA9IDA7Ci0JCX0KLQotCQluYW1lbGVuID0gcSAtIHA7Ci0J CW5hbWUgPSBlc3RybmR1cChwLCBuYW1lbGVuKTsKLQkJcSsrOwotCi0JCWlmICh6ZW5kX2hhc2hf ZmluZCgmRUcoc3ltYm9sX3RhYmxlKSwgbmFtZSwgbmFtZWxlbiArIDEsICh2b2lkICoqKSAmdG1w KSA9PSBTVUNDRVNTKSB7CisJCWlmICh6ZW5kX3VfaGFzaF9maW5kKCZFRyhzeW1ib2xfdGFibGUp LCB1dHlwZSwgbmFtZSwgbmFtZWxlbiwgKHZvaWQgKiopJnRtcCkgPT0gU1VDQ0VTUykgewogCQkJ aWYgKChaX1RZUEVfUFAodG1wKSA9PSBJU19BUlJBWSAmJiBaX0FSUlZBTF9QUCh0bXApID09ICZF RyhzeW1ib2xfdGFibGUpKSB8fCAqdG1wID09IFBTKGh0dHBfc2Vzc2lvbl92YXJzKSkgewogCQkJ CWdvdG8gc2tpcDsKIAkJCX0KIAkJfQogCi0JCWlmIChoYXNfdmFsdWUpIHsKLQkJCUFMTE9DX0lO SVRfWlZBTChjdXJyZW50KTsKLQkJCWlmIChwaHBfdmFyX3Vuc2VyaWFsaXplKCZjdXJyZW50LCAo Y29uc3QgdW5zaWduZWQgY2hhciAqKikgJnEsIChjb25zdCB1bnNpZ25lZCBjaGFyICopIGVuZHB0 ciwgJnZhcl9oYXNoIFRTUk1MU19DQykpIHsKLQkJCQl6ZW5kX3V0ZjhfaGFzaF91cGRhdGUoWl9B UlJWQUxfUChQUyhodHRwX3Nlc3Npb25fdmFycykpLCBuYW1lLCBuYW1lbGVuICsgMSwgJmN1cnJl bnQsIHNpemVvZih6dmFsICopLCBOVUxMKTsKLQkJCX0gZWxzZSB7Ci0JCQkJenZhbF9wdHJfZHRv cigmY3VycmVudCk7Ci0JCQl9Ci0JCX0KLQkJUFNfQUREX1ZBUkwobmFtZSwgbmFtZWxlbik7CisJ CXplbmRfdV9oYXNoX3VwZGF0ZShaX0FSUlZBTF9QKFBTKGh0dHBfc2Vzc2lvbl92YXJzKSksIHV0 eXBlLCBuYW1lLCBuYW1lbGVuLCBjdXJyZW50LCBzaXplb2YoY3VycmVudCksIE5VTEwpOwogc2tp cDoKLQkJZWZyZWUobmFtZSk7Ci0KLQkJcCA9IHE7CisJCXplbmRfaGFzaF9tb3ZlX2ZvcndhcmRf ZXgoWl9BUlJWQUxfUChzdG9yYWdlKSwgJnBvcyk7CiAJfQotYnJlYWtfb3V0ZXJfbG9vcDoKIAor CXp2YWxfcHRyX2R0b3IoJnN0b3JhZ2UpOwogCVBIUF9WQVJfVU5TRVJJQUxJWkVfREVTVFJPWSh2 YXJfaGFzaCk7Ci0KIAlyZXR1cm4gU1VDQ0VTUzsKIH0KIC8qIH19fSAqLwo= --000e0ce03ba21c4b870478eed0bf--