Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:61853 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 13158 invoked from network); 28 Jul 2012 06:59:35 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 28 Jul 2012 06:59:35 -0000 Authentication-Results: pb1.pair.com header.from=lester@lsces.co.uk; sender-id=unknown Authentication-Results: pb1.pair.com smtp.mail=lester@lsces.co.uk; spf=permerror; sender-id=unknown Received-SPF: error (pb1.pair.com: domain lsces.co.uk from 213.123.26.184 cause and error) X-PHP-List-Original-Sender: lester@lsces.co.uk X-Host-Fingerprint: 213.123.26.184 c2beaomr06.btconnect.com Received: from [213.123.26.184] ([213.123.26.184:10397] helo=mail.btconnect.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 5E/F3-23870-4DD83105 for ; Sat, 28 Jul 2012 02:59:33 -0400 Received: from host81-138-11-136.in-addr.btopenworld.com (EHLO _10.0.0.5_) ([81.138.11.136]) by c2beaomr06.btconnect.com with ESMTP id IPY11537; Sat, 28 Jul 2012 07:59:29 +0100 (BST) Message-ID: <50138DD1.1090009@lsces.co.uk> Date: Sat, 28 Jul 2012 07:59:29 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:13.0) Gecko/20120604 Firefox/13.0 SeaMonkey/2.10 MIME-Version: 1.0 To: PHP internals References: <500EEA76.1030407@ajf.me> <5010138D.5050804@ajf.me> <501015B9.6050704@ajf.me> <501085FE.7070406@lerdorf.com> <501382B3.2090702@lerdorf.com> In-Reply-To: <501382B3.2090702@lerdorf.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-Mirapoint-IP-Reputation: reputation=Fair-1, source=Queried, refid=tid=0001.0A0B0301.50138DD1.0083, actions=TAG X-Junkmail-Premium-Raw: score=7/50, refid=2.7.2:2012.7.28.55725:17:7.944, ip=81.138.11.136, rules=__MOZILLA_MSGID, __HAS_MSGID, __SANE_MSGID, __HAS_FROM, __USER_AGENT, __MIME_VERSION, __TO_MALFORMED_2, __BOUNCE_CHALLENGE_SUBJ, __BOUNCE_NDR_SUBJ_EXEMPT, __SUBJ_ALPHA_END, __CT, __CT_TEXT_PLAIN, __CTE, __ANY_URI, __URI_NO_MAILTO, __URI_NO_WWW, __CP_URI_IN_BODY, BODY_ENDS_IN_URL, BODYTEXTP_SIZE_3000_LESS, BODY_SIZE_2000_2999, __MIME_TEXT_ONLY, RDNS_GENERIC_POOLED, HTML_00_01, HTML_00_10, BODY_SIZE_5000_LESS, RDNS_SUSP_GENERIC, RDNS_SUSP, BODY_SIZE_7000_LESS X-Junkmail-Status: score=10/50, host=c2beaomr06.btconnect.com X-Junkmail-Signature-Raw: score=unknown, refid=str=0001.0A0B0205.50138DD2.0006:SCFSTAT14830815,ss=1,re=-4.000,fgs=0, ip=0.0.0.0, so=2011-07-25 19:15:43, dmn=2011-05-27 18:58:46, mode=multiengine X-Junkmail-IWF: false Subject: Re: [PHP-DEV] Re: Generators in PHP From: lester@lsces.co.uk (Lester Caine) Rasmus Lerdorf wrote: > I don't think this generator question is any different. We need to > explain generators in the simplest way possible. The simplest way to > explain generators is to not even worry about them being generators at > all. Simply say that functions can now return arrays one element at a > time using the new yield keyword. That's all. It's this 'concept' that I am having trouble seeing in the general process that is required using PHP to generate web pages. At the end of the day I have to generate the finished page or sub-page so I need all the results anyway. Part of my own problem in understanding may be that all my persistent data is in a database, and processing the SQL queries to efficiently serve up only the data needed for that particular page is paramount for speed. SQL has the concept of SUSPEND in procedures, but one would not use that here due to the processing overheads. One builds the array of results and processes it to provide the data to be fed to the client either while getting the dataset back from the database ( the html elements form part of the query ) or the much faster approach, you get only the data stored in the initial array, and then iterate that array to add the wrapper. Since in many shared hosting cases the database is on another machine, you want to keep the amount of traffic between machines as small as possible. OR is the point of this concept that we can suspend operation and return later to do the next set of the list? In the examples given so far, even the new ones on why 'callback' does not work, understanding WHAT the end list of data is going to contain is difficult to work out and picking up the increasing amount of similar code being added to libraries makes maintaining them ever more difficult. But then perhaps I'm just getting too old for this and it's time to throw in the towel :( I'm certainly not enjoying all the agro keeping things working at all ... -- Lester Caine - G8HFL ----------------------------- Contact - http://lsces.co.uk/wiki/?page=contact L.S.Caine Electronic Services - http://lsces.co.uk EnquirySolve - http://enquirysolve.com/ Model Engineers Digital Workshop - http://medw.co.uk Rainbow Digital Media - http://rainbowdigitalmedia.co.uk