Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:129387 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 lists.php.net (Postfix) with ESMTPS id 6C8AE1A00BC for ; Sat, 22 Nov 2025 11:42:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1763811768; bh=hxIzoaM+7SihBdzs0kgtQ/Z5ays2DqVbpdzUwLDmZ6o=; h=Date:From:To:Cc:In-Reply-To:References:Subject:From; b=Soa3DlK8tjeP8tTJ/1LpA2gqQWnv5eBJGHTmPNhYskgwAScSSMvJ2vwsS4Gx/3R5l bvrEbGiikWEMn/9vkGIaJJQJ0LCMYp2+6/J20CFZaYwFrxVRPGc275vm9ThxXk74QE NpmkFN0LLi6lJcfYvCRqTSCNtHfy+GLNOcnSSKAFpMUIsu17FL16rAluf60901mPB1 QQSO8TwQYC6RkFgJrY+FxDf8UPbl2hyhDrGYSqJWcMwtiOxeT1DwCc4BckzyUuJJHz vdbfNOl0Q/79fHn/lz0kkfcnJ5jXAx2zrFMuuZ0DxSqyz5U8UjZuM5hNqU1bPgYOYm woFfKiTho5eig== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 5DB31180041 for ; Sat, 22 Nov 2025 11:42:47 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on php-smtp4.php.net X-Spam-Level: X-Spam-Status: No, score=0.6 required=5.0 tests=BAYES_50,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,DMARC_MISSING, RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=4.0.1 X-Spam-Virus: No X-Envelope-From: Received: from mout.kundenserver.de (mout.kundenserver.de [212.227.126.130]) (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, 22 Nov 2025 11:42:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thomasbley.de; s=s1-ionos; t=1763811760; x=1764416560; i=mails@thomasbley.de; bh=hxIzoaM+7SihBdzs0kgtQ/Z5ays2DqVbpdzUwLDmZ6o=; h=X-UI-Sender-Class:Date:From:To:Cc:Message-ID:In-Reply-To: References:Subject:MIME-Version:Content-Type: Content-Transfer-Encoding:cc:content-transfer-encoding: content-type:date:from:message-id:mime-version:reply-to:subject: to; b=oHGZ629PqMMqo3L/TfH2YUn8hT6d8K5WZHWv1B1IhWWoAp2xi2hOYG2p9x1pp3v3 Q/+rGp4rM88Vcfx3/pvbCyMHxikTBDbv4xWnLHbBCHPrQ9+6UBzbVAu9NzrWV08v+ k/9TV7RGt3EPC3N6ibPD//RMfvlAp/V9Dws5YBYCiq5tlxmgStK/0tmnUpSixo8A8 3NE5HRTrHNIyKzSlZTghQ4DtxqKWlTuum2/j9RGrlHRyZp8aZJtyl734RC7Xz/po1 uwJcTx/oAxTIC4n3ZIFRHCva0j8ddwSeEhMYz1kB+kOMqMlSGpSbew2WNMNItVorI QK0KqVH3EzlAoCxzjw== X-UI-Sender-Class: 55c96926-9e95-11ee-ae09-1f7a4046a0f6 Received: from open-xchange-core-mw-default-1.open-xchange-core-mw-hazelcast-headless.open-xchange.svc.cluster.local ([10.73.157.161]) by mrelayeu.kundenserver.de (mreue011 [172.19.35.3]) with ESMTPSA (Nemesis) id 1MUp8r-1vVKbJ0WWX-00KKCf; Sat, 22 Nov 2025 12:42:40 +0100 Date: Sat, 22 Nov 2025 12:42:39 +0100 (CET) To: Edmond Dantes Cc: internals@lists.php.net Message-ID: <1402906904.784903.1763811759896@email.ionos.de> In-Reply-To: References: <383528143.397454.1763760932585@email.ionos.de> <691963327.399484.1763796022993@email.ionos.de> Subject: Re: [PHP-DEV] [VOTE] True Async RFC 1.6 Precedence: list list-help: list-unsubscribe: list-post: List-Id: x-ms-reactions: disallow MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Priority: 3 Importance: Normal X-Mailer: Open-Xchange Mailer v8.38.93 X-Originating-Client: open-xchange-appsuite X-Provags-ID: V03:K1:2SVcz9VHNDEjy+Z3z5xu1hd5QAOmqN7FPHvjYC44UQd3aDybl1x A03+TpN0s1Lq+w1cUPCb/GROdp+yiNFnHK92DtU0hQisZH8vfP+DBn1jB6Ot/yVZWUr5+LO 3k1B1NSMTZArsg4BtmpQ65JZs3u1xarEVyZ3vWOIXa2XBA+U9ahUdXHOqq+HAQniyODflvj I++L+XEGUSR0mA9kraeFQ== UI-OutboundReport: notjunk:1;M01:P0:G3HLSs7CWqM=;7ECpupT43NT7tHFCEIFoN5yo8Uc M5PyeVDrmDzyI/5BRkzA7B28u0nlqoglN0h4Gtm6WcRBz3xBr6LkVxctq3BmQ8cDB74pMq46i Ymv9pT1pPkNFuNylkawB+xuvXr9VNG8VyvxcnhTimNhi+YUqy2O1eM6bWmdYZ7+A/do3b8IYI v9LIjPxo6QDDzIaBDSu9T1DTl08GQrfFDeQhJwbpEqcKkyFwKI/LwRLSAjliA2Or9t8jHDEt1 0rP7w+g4HG0a0ccPbH0Tm+Dq6c+iIvIAnvIYJhZ8EIZF726E9Th6V+haFoLucsb8eUeCerGVb 0aPQtEQ7iTIavpmKEimeT6sXh3KqoUQ8yRLa//ZFjLteMagIHa+quGLlICcR6vkJxa3TxNWXa jhVmZCfLrgYfzyVhN6DUhiqPhoSzNwJ/nV6M0xgVcD0L8QXrusorHpCTBzmOii9In19oiqZZa 30Ov2Tvo2gAlhc65QDNLNek/sra3ZQiO2Y4iweCmIXHf5KBQSU6lP+W9AOG+I+AV0qXlLDIqI rV66CJefZH1U9/mingzKetZpc1HLWW2ec1vxzbtx4isFgTDIm9Hi/4Ia/c0MkwxqeXgCO1Y35 mcun3t2mGfQ2ZQZWI203ha59lNtsUgVB5yhuBelNFxWG27ykTsnPjFiIsWhE8CCRKY5O3366n uglYqH/f6K5Tck5pkJaFjUsgve9aqIUbLstjYfJS+BqQWI6L8yAp0tU6gMkN82kq5Ww6rR8v3 ebCWQSZFV26NQ8OM0XHrH+wjcaBMkH/U8WgP/chCugXzGVKYgIN49FsJg0BhnKo7gKfgfVQJW amidFni4Z+LHyERyfoxflXjlvMnNjvtjATIS/zY8d4WYtf0NGZtyOh3kW+Boqz0MiTYskqqSF gAttNDKK2/vnA6ezXNd3GRxVBUi5G/u/TjcXnV3kE2k+2Fvj2mEvZJa3QhWSxYwZock4ebVY7 TZ+1jzgDiC1KelXW84+oraT/s/w+3jvFGREgPXpnD4RxCb3BBhINusiD6LxIFjvXErcqPWJ7C vRm5A7pSdyxP6ic9WiXt2z1UMTM0OIFTwCpZ1twGkMuYixgTXsQuXLroPl3fZP9AYYEyHGhP6 wzGYXQ9kIaY/8oY3h7C5eXSFDUKuPp+E7CEYnpQBZcqGA+nYqP6ZNkyzDuqjEvafXgwjgYfPJ Rf5j9pp3UXqlXti2j6r+JzR3N3W3Dvqn4aNGnRHRNdSA2hSmCZEEkdppJWvCXKPPYFGLjg1/L keDIy5atdysSk+Ah6xSpwg3jS6aozqoCLkZC2m2Lcw7U8UIBzGEugVOZAGXhVFzqtUvZ56EV9 AMw4hSrzLpSbl+H5lUN8tL/efRDja6FPFFZa7XyIfmiHzQk8RmDNkRvQuoCVvz9QLLfoBBKrJ wMEA5ds2JCqiIey+QLD4cjYXlCn9QWa0OpKvmHuoAr041goyn/4w/IXnpop9sN9/imtUnhPS9 klX/NJpfvhgLr7oMl1e1A0imNZ4YGcZITrsoceaVpt2kYjvvEkha1ZW9GFDvJELqVHVrMeLrR N55t11oL7YddubbvXohX9X1GcDo0tKge8su+iSjaPxPpNh+8uKTCB3uRQ6SotH0QyjOF6wVze dUwHoEWwagXddnYPTrsXyZKLFE7UkdCwWaYsmD8oOIfJGxD+RJq1Uc7XknIlFtYWtJXx+27VO Kz/K6RgvO+iDqRFqXidl1ag03aDi6vIxPNrl7tPVVjW2egiJmCORDI0+Hq8ihbfBGaMOoSGDM CDX6MBBhwQzl4zY+LsnUWbvJLeUw091qBCw== From: mails@thomasbley.de (Thomas Bley) > Edmond Dantes hat am 22.11.2025 11:37 CET geschrie= ben: >=20 > =20 > Hello >=20 > > I expect that's already a good improvement for many use cases to read = multiple files in parallel, run multiple queries in parallel, etc. >=20 > I see. You want to get several promises to wait for? > Then there is a good way to do it without additional functions: >=20 > ```php > $promise1 =3D spawn(file_get_content(...), "file1.txt"); > $promise2 =3D spawn(file_get_content(...), "file2.txt"); > $promise3 =3D spawn(file_get_content(...), "file3.txt"); > ``` >=20 > This is equivalent because a coroutine is a Future. In the same way, > you can turn any other function into a Promise without creating a > separate API. >=20 > There is a nuance regarding resources. And in certain scenarios, > creating an array of Promises in another way can save memory. For > example, a scenario where you need to handle a large array of sockets. > Such cases require a special API. >=20 > --- > Ed Hello, function return types should not depend on the outside context (spawn, hoo= k, ini, etc.) because when the code gets more complex, it's very hard to f= ind the outside context. So file_get_contents() should always return string|false, file_get_content= s_async() should always return a promise object. =46rom the example I would expect it like this: $promise1 =3D file_get_content_async("file1.txt"); $promise2 =3D file_get_content_async("file2.txt"); $promise3 =3D file_get_content_async("file3.txt"); // do sth else $content1 =3D $promise->await(); $content2 =3D $promise->await(); $content3 =3D $promise->await(); PHP got very successful by making things easier than in C, this should be = the path to continue. Best Regards Thomas