Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:125701 X-Original-To: internals@lists.php.net Delivered-To: internals@lists.php.net Received: from php-smtp4.php.net (php-smtp4.php.net [45.112.84.5]) by qa.php.net (Postfix) with ESMTPS id 4C7DE1A00BD for ; Sat, 28 Sep 2024 14:46:49 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1727534940; bh=XwDwCcam1ve3x9CSNt+n0h9y9RnMS2qACN3e/BPVlVY=; h=Date:Subject:To:References:From:In-Reply-To:From; b=Hq24L1O86jPmPkguXFZ97M3aQUMkk1xF4XlD1zOGfmGTAAEFlnRji3SV8ASLDZOS0 1a5NLXiyl2aIfjAvcw+NnSAPPQZ5JfZ0cplCBGRd1S4pq3M0F6NQ6FVEwqU8Pyda5H sA45xeaXYDTWs9LOfO1CmTEkMyIh+wKxnXOGolQokXWuOqQZqHiAXUB2LBJXVEODtB VCRhX+byTebop9AW8cLyNBIg3FGxXXR4hOhuERkHGUTaBY1MJL/cq8NZTjJCX8oF2U 4x1JMDGuUKoupo/PV9HsoL82p0MuScmQvoT9pDLcvlFFFFchJwxF1Eb7TIky45A5VQ k9+V0U6kpqcCw== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 6B96C180069 for ; Sat, 28 Sep 2024 14:48:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.0 (2022-12-13) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_PASS, FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=4.0.0 X-Spam-Virus: No X-Envelope-From: Received: from mout.gmx.net (mout.gmx.net [212.227.17.20]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (prime256v1) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by php-smtp4.php.net (Postfix) with ESMTPS for ; Sat, 28 Sep 2024 14:48:58 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.de; s=s31663417; t=1727534798; x=1728139598; i=cmbecker69@gmx.de; bh=mOprWTIRIEUe2aV+dlwsRAD6hs0730/jStC+VvjbZII=; h=X-UI-Sender-Class:Message-ID:Date:MIME-Version:Subject:To: References:From:In-Reply-To:Content-Type: Content-Transfer-Encoding:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=LDO49doLEsLh2bIjZK1K7q/TUgMqLUBK499OR4Agp5RGrxwXXnB5JqMQNOhkvCCC 9K4JDnlDFhE5RyYfVMIXXnm6w78t0nQixNKsDQT3+V+qB7PffeS+zJAkRxuvIVEAu AHm5F8xYMSHD2cymWzmg9ZeJeQ+3/dC1FUD6pI4WBQwFB4/9lP07fW4ZC3M5FZ2ji kJC5QYRe/joMRqTD6Jp4zdRBBzOzKN4Z8gTXUx61GqkS4I/YOoehENRZ2O+S/UhM6 pFCx8pMGjW9bjoJyFTVOmqjDu4PLsaI9pQE5uREuWu7zrwZhQJ/kOv5lOnNchbxCZ 02u1uUnYxETwnTH0lw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Received: from [192.168.2.130] ([79.251.205.37]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1MKKYx-1sckyn0411-00PY0c; Sat, 28 Sep 2024 16:46:38 +0200 Message-ID: Date: Sat, 28 Sep 2024 16:46:36 +0200 Precedence: bulk list-help: list-post: List-Id: internals.lists.php.net x-ms-reactions: disallow MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PHP-DEV] Protected destructors Content-Language: de-DE To: Jonathan Vollebregt , internals@lists.php.net References: <0a45288d-8ae1-4b1c-8836-6bdd1cf34eb2@gmx.de> In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:T6k9Hd10g4aQ2uQzjMbEzT56t7MLFh8bRNVusZkIm9BVjMd2aAA 3cHx3b5dxgNEEEZL8SKNMUDr09xIBfgebr7fZcByEIT5nuYcXa1ochc6k2mHYa4d+yfPssZ BXRaTY5hjlUYfRH1Ugn3G0y0ffWyfSPcirysW0oe/OsvjuPCKT/DcfX1hm7rq6feYEAUdE3 UiIfzE3R+bLVpjW2OKxsQ== UI-OutboundReport: notjunk:1;M01:P0:JbZt5Y1AhG4=;3HFo4Xyzp+7eBM1hq+LxN+/35vM 3dz+9fsYPyWse0aFtiFNMfYHoogpo+wy6YjqzkdZtn572nRYQnc8YskPBHknlqyWV1yepkdVp 8DN/IQukMR08DY7mriDUCINeQxn1+sPQMGiqxdLmp1OoSIyJ7AfWTRQ/gwRanU9XivAIm8gXD CaF5I2fR4thulbHoDH8ty9vkolkW1e3Am+eYTYFvQtjlPnK9rFjiE2RxCTGgyZXwtIgcAe/yY zk3K+DJV11gRWjKeYqxQ1UBBi03nWs6TrzZQ0LQTWnZAwfafpkF21rsTEM/eoGtjcntm5by+C v5sX58QXRy4pXeyRDPRm2uYNFGbgKqOTtvs+RWTfpA75NEheiyl8bZqCDqbKqvWrsOdWXPwnp rGQ4vwiufyaYaZJT9aB98/HAM2iHz2blk5131J94XHAgHZZLUSkLPqwxKD2g9IPBVDTJyTdd3 3WAXePOiJJ0uN/etdET7zDZ9qLm+qyDh8YQVKUWCkFs6tlSFPIkkho8pdBRDR700KwYiqoWbW s+9ws1twKkAKqKG0HjAQTIfKVBF/Te14bknjXrIYXTtO6JYkXNnDmZqBlDOjhn61hMh2OAuJY KWBO5s06YA9UeSUe1wgq/F52TSuBF/eHlkK5pCkXyiN0DvedAtEVNH0/tP78vu7LBT3KpZmnC 2xDiCB0XlFc/rZSPOQoLA0x1OU6G4h8FPfYuygqLTq+CoCQn5+wGVgBTQwE+yL2EPynjUK+Un rv0Kc9ednpn0Y/ECoiL+j8rV9SVf4uospEl3f3CKbVzqA0TQ9VXnTjndKC4XuJY1lcukqk3Dp qfu0xhirmW74jFZWBjc4gwBw== From: cmbecker69@gmx.de ("Christoph M. Becker") On 28.09.2024 at 16:21, Jonathan Vollebregt wrote: >> Hmm, I wonder about the use-cases of userland destructors.=C2=A0 It see= ms to >> me they are mostly useful for sanity checks, and maybe to close >> resources.=C2=A0 Are there others? >> >> If not, I wouldn't worry much about the visibility of destructors, >> because resources are scheduled for replacement anyway. > > Besides closing resources and killing processes I've seen them store > data to disk for caching, remove temp files, call callbacks/dispatch > events, change state on other objects, dump stored errors to error_log > in a loop in an error handler... Okay. My point is that you cannot know (unless there are no circular dependencies) *when* a destructor is called by the engine; it may be called during some GC run, or during the request shutdown sequence. As it's now, that happens pretty early during shutdown, but that *might* change when stream resources are converted to objects. So you cannot be absolutely sure that everything works as expected in destructors. This is a general issue for garbage collected languages; some of these have no destructors at all, for such reasons. > It looks like there's quite a lot of use-cases for them (Which can go > wrong if called twice) that don't necessarily require resources to be > involved Like I said, I wouldn't be particularly worried about clients calling a destructor manually (that's a bit different for the engine, since segfaultish conditions should be avoided). But I don't have a strong opinion about the visibility of destructors anyway. I'm fine with allowing protected constructors. Christoph