Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:129388 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 ED89D1A00BC for ; Sat, 22 Nov 2025 11:46:24 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=php.net; s=mail; t=1763811989; bh=xSTRF8iS0uf6bgZC8sF/YuxcC5MWGkUIc6t8KljfvrQ=; h=Date:From:To:Cc:In-Reply-To:References:Subject:From; b=fDCTFlqbxW4QGiwn9F3nGrueeiadJceOKsmpXZq88q9poEce1vSE9DNjXvIU1/lfr Apn/1ydx2ZgQaCZMGUlaJ6TWDahhciurCJM5CIk/vkUAlthjBPtcnv1qM6yR8WxlrG gHLXjb+oVR/d+mSSl57UA6oL6inwIGdmpQZ5GEP8beWuMmsNum+dYp36wWJTgVHQKU +DZQ49btM6YOQmwDohGBfkFifhkTOIYsdHB54AMnBGlmQEyosP7QNEkR6nNKsTlWW/ VLTn8q7/KelcymaJI0Uwf3i6CrJpL9YD6QMvOKfnMgcLuTHURRSMvy7Lvo0baSsVDV T1gCcQpJvhJLQ== Received: from php-smtp4.php.net (localhost [127.0.0.1]) by php-smtp4.php.net (Postfix) with ESMTP id 6DF3D18038A for ; Sat, 22 Nov 2025 11:46:27 +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.134]) (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:46:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thomasbley.de; s=s1-ionos; t=1763811978; x=1764416778; i=mails@thomasbley.de; bh=xSTRF8iS0uf6bgZC8sF/YuxcC5MWGkUIc6t8KljfvrQ=; 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=WjmsGJBFjw4szMUlsGVSvqtf/zomY/MTlper+8g53xxtSAwRzmSu/sb3lGWB2OL+ PfGXuPcmaLmoh33wDPPqT4whsjQ+QlTL871+TzhvqsFetBSCCE15jrX32jh6QrqtR 2MCJ3YaDIvOp0kMqlpmok6M0GNoTOLUU8SIHnWAazXw7vAZ/26B0cTYqwBj1+3FnL /Cxxg9b8cgrcesCHhkEzhPUXb36YOtXYoZZ6aDFC+TV9VNj2PL0W3K4zW/sjl5elV NmRgIYHhO5ESXyFLCrk5z9Vk9CGzeZRvxYx50dt9d30Hmi9m4+3QZ8npPsslas4+F QXkYxtGkpdvrP9GZ8g== 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 (mreue010 [172.19.35.3]) with ESMTPSA (Nemesis) id 1MWAf4-1vcmWm2fG6-00NAIT; Sat, 22 Nov 2025 12:46:18 +0100 Date: Sat, 22 Nov 2025 12:46:18 +0100 (CET) To: Edmond Dantes Cc: internals@lists.php.net Message-ID: <2015208655.784984.1763811978476@email.ionos.de> In-Reply-To: <1402906904.784903.1763811759896@email.ionos.de> References: <383528143.397454.1763760932585@email.ionos.de> <691963327.399484.1763796022993@email.ionos.de> <1402906904.784903.1763811759896@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:85bmQAmTJsI86VFg4YLVvcEcrrKEwsf9Q0uFgp701wguqtbXYx6 xzxVlgLrdw+ZlrTOOJk/7QGGEzgKrprGAjWHARe1DVP6Rr/IxGKxhdmV7vAg5SaRkr84H7A wFHDANCYjcOVeRjKwbfenv13Jn51gRQP1Z13lc6DzrqZN+2vNG82kt3a3vefq+6qUyIY9Kp +8vFh1r+6PPOdTzJ9tF6w== UI-OutboundReport: notjunk:1;M01:P0:yE74ym1IBoo=;t0XYdY7cRjLyCwbyXIKxizIU9k9 e7lz8XGChzHVI9V95KhkilbmZ2npoWdhTsO1BV1Tx6oeu/Arsh3y0G4Sn5awt2XRmJ9wp0HdJ yKIV0aq8J6W1h80Md/sfd/h4w78qLs/rL56ArkEiqjXA8C12MYquiINouK3p+mxhr8mK32Jtu J6oTFKdGW54cKtqbyKQtSdCGl8vHp1fgQ611wa8yLpohJjmICUZmYtzOebmAsAlCvjI77GInA NzswUN5UP1k+r8R8+YgOgWrFOCoAzTrWJfEHJMknSqZ8p+3kRhtnQAacGRk2kHlid0/NOmi1p AZL9ZPHvuul2mOWUUnzYt66a3SCVoEkJNSt+0GuyqxXmWyprK//KWsH4fm83302yiPDvkjMC6 VZK9aPKaC375HiKKXBdPHlCajJhjZNLOkMZUJDBjOD3ichdmejjnwCfIasEvA7UtkJfFS5wPE 9MebpXbUEA84TaNzgKLrhTpCcjzbP4N1t4n8dWDT2gw34PjTXQffBqrv8/OARC1qPnWYfr69p Sqms8HVmKTawvQsWR/lzN7gPuPxQxSAmUaHdhoAlhZSoVys/AybP9mQ9XSDonE3HY1tRg7R6P mCh43ZasPahgpDHmqmuZ8S9WeX+JueHGI5hF32QNpwBadsq/uV+3vKPtXI0s4+THkVl+v5FpZ Yjy9RNG6LmobvRgc7JoWRjpbZb46FVIv7RDA8w9ERFiTydYZ880XWk7yxcL3Z7/weuPmMIXK4 Nhd8itKk6JKpxdKmUTnzaavUl3lStdN/3920jtJIJtTnlqC20tP2BtRLAbw7QXXsTdFxYptJk xW7Uk2DVsfKHWGn/b/ng2vJ3WjeRdm2vBIEZEGzelxkor7Qy6ow5Vqh9C8eIZT0N4MzLZPniU 0Rqge+t1aNOarxiRN/mJ54MMEP+lZZnva+CJoDOxbfLEqlECRcDGYvnZWj2Qye9oeme/Jrzk4 UPT+ampfiB5HBqUSBJNlkg5WgsUt7+TGsXeNhpz0j20jsy/+EWBb7f4Yp1ZpMSfWemxM/ppc7 mDCgctgf3VoZbzpmXcRvrj/gi6/+kyr5c59CgBjmeKFFKUixdMyCIJTEV/soKcUX1TRKVjED0 8ItVBISFAe6FV0TqnHu4Y6snl5ivY02ewQkEoh6bQyCsJl6qEccEWiW19sDLqnafG8JMY3Rzh AI96ZHWMLHhayWm5DASsUjSOHHVzy/fg2A0OPemFaLQeCQ715QMwUej9h7irgdEfa782g3cq+ 7Kkkqm50YJMsvBuaGBrvspouW9By23xR2r3VDGtBeUOvJ5Dekq1Uh7H94EdsfTU57pnbXP4r7 kXrR+H9Zy2vZ3no5XU13kzz/p0mQe2i6+qao4uKkfYQ/F6aV2bhXrMJxQR9E3AI57f76THx09 dvn0/4TGa+bAhz5hC1FaTgXcU3O3V5XrgS9Ju5wFEBRrUFwFObn1BLGfbZlQwy7v50Zz/uFNw uO4jHWybLlERvJNirotQJEz+DRMCStKG0ZwZnTuVhnbklxo1SQjJ/1egVFvk+GFJUsgr5M7Bm CTpxr3zgWtf5q9uGtRWHBujRwbBPYIQOhSsj6S99LTLHTOc2QEDnROmuzQERfsMZKKf1mV9vl FXxoHTSj3aZe4N1bOG6m8r+T1LxsUz+0JdDep9eDU/mf843ySLdX05UDd3FWyfgkdke509g6d 3LxwJZCpjUuCZtAw5GNvqVVoj2jqV4a6HGKduXd+Ip88I/IwiqJF7cHbU8feJx0ngqki0b50b GhIGHgcO1q+O7 From: mails@thomasbley.de (Thomas Bley) > Thomas Bley hat am 22.11.2025 12:42 CET geschriebe= n: >=20 > =20 > > Edmond Dantes hat am 22.11.2025 11:37 CET geschr= ieben: > >=20 > > =20 > > Hello > >=20 > > > I expect that's already a good improvement for many use cases to rea= d 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 >=20 > Hello, >=20 > function return types should not depend on the outside context (spawn, h= ook, ini, etc.) because when the code gets more complex, it's very hard to= find the outside context. >=20 > So file_get_contents() should always return string|false, file_get_conte= nts_async() should always return a promise object. >=20 > From the example I would expect it like this: >=20 > $promise1 =3D file_get_content_async("file1.txt"); > $promise2 =3D file_get_content_async("file2.txt"); > $promise3 =3D file_get_content_async("file3.txt"); >=20 > // do sth else >=20 > $content1 =3D $promise->await(); > $content2 =3D $promise->await(); > $content3 =3D $promise->await(); >=20 > PHP got very successful by making things easier than in C, this should b= e the path to continue. >=20 > Best Regards > Thomas I'm sorry, the correct example should be: $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 $promise1->await(); $content2 =3D $promise2->await(); $content3 =3D $promise3->await(); Best Regards Thomas