Hi Dakota,

Thanks for clearing that up! I haven't looked at the source for CakePHP 3
yet so I didn't actually see how they implemented it. I should do more
research next time as I don't want to mislead anybody...


On Fri, Aug 15, 2014 at 3:32 AM, Dakota <[email protected]> wrote:

> Hi Alan,
>
> The Query object does not use SQL cursors, but rather buffers the results
> locally (In PHP land) and builds lists from that.
>
> However, CakePHP 3.0 does rely on obtaining the row count (With
> PDOStatement::rowCount), which return -1 with PDO::CURSOR_FWDONLY (
> http://technet.microsoft.com/en-us/library/ff628154(v=sql.105).aspx)
>
>
> On Thursday, 14 August 2014 20:00:52 UTC+2, Alan Read wrote:
>
>> I think the reasoning to use scroll was for future reasons....in CakePHP
>> 3 they are introducing a new ORM layer (http://book.cakephp.org/3.0/
>> en/appendices/orm-migration.html) and a Query Object. I believe they are
>> going to implement the Query Object with methods like last, first,
>> previous, next etc. With a scrollable cursor those operations are mapped
>> one to one and should be pretty fast:
>>
>>
>>    - *SCROLL: *It specifies that all fetch options (FIRST, LAST, PRIOR,
>>    NEXT, RELATIVE, ABSOLUTE) are available. If SCROLL is not specified in an
>>    ISO DECLARE CURSOR, NEXT is the only fetch option supported. SCROLL cannot
>>    be specified if FAST_FORWARD is also specified.
>>
>> (http://www.sqlservergeeks.com/articles/sql-server-bi/31/
>> sql-server-what-is-a-cursor)
>>
>> If the cursor is set to FWDONLY, then the only operation available would
>> be next. In my case, with cursor set to SCROLL a simple find query was
>> taking 18 seconds to complete...since the majority of the time I just
>> forward loop through a result set, losing first, last, previous etc is not
>> that big of an issue.
>>
>>
>>
>>
>> On Thu, Aug 14, 2014 at 11:31 AM, Jordan Hopfner <[email protected]>
>> wrote:
>>
>>> In the PHP manual it states:
>>>
>>> PDO::CURSOR_FWDONLY (integer
>>> <http://php.net/manual/en/language.types.integer.php>) Create a
>>> PDOStatement <http://php.net/manual/en/class.pdostatement.php> object
>>> with a forward-only cursor. This is the default cursor choice, as it is the
>>> fastest and most common data access pattern in PHP.
>>> So I don't think it's a bad idea, but I don't know the reasoning the
>>> reasoning for using SCROLL over FWDONLY.
>>>
>>> On Thursday, August 14, 2014 6:38:47 AM UTC-6, [email protected] wrote:
>>>>
>>>> I'm not sure if this is really a good idea.
>>>> See:
>>>> http://stackoverflow.com/questions/1155211/what-is-pdo-scrol
>>>> lable-cursor
>>>>
>>>> But if you want this find its way into the core, then you can help the
>>>> core team to get in there.
>>>>
>>>> Help yourself by either:
>>>> a) Create an issue explaining everything on GitHub
>>>> https://github.com/cakephp/cakephp/issues/new
>>>> b) Fork the code, change it, prove that it really solves the problem
>>>> without breaking anything else and create a Pull Request
>>>> https://github.com/cakephp/cakephp/
>>>>
>>>> Thanks
>>>> Marc
>>>>
>>>> Am Mittwoch, 13. August 2014 16:07:26 UTC+2 schrieb Jordan Hopfner:
>>>>>
>>>>> Thanks Alan, appreciate the help. The project has been put on hold for
>>>>> now but I'll definitely try this change when I go to use SQL Server again.
>>>>> It would be great if the core team would make these changes to Cake :)
>>>>>
>>>>> On Friday, August 8, 2014 10:30:20 PM UTC-6, Alan Read wrote:
>>>>>>
>>>>>> Changing the line:
>>>>>>
>>>>>> 772) $prepareOptions += array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL
>>>>>> );
>>>>>>
>>>>>> to
>>>>>>
>>>>>> 772) $prepareOptions += array(PDO::ATTR_CURSOR => PDO::
>>>>>> *CURSOR_FWDONLY*);
>>>>>>
>>>>>> in the _execute function inside of Sqlserver.php solved this issue
>>>>>> for me
>>>>>>
>>>>>> On Wednesday, May 28, 2014 5:19:09 PM UTC-4, Jordan Hopfner wrote:
>>>>>>>
>>>>>>> Hey guys,
>>>>>>>
>>>>>>> I'm using the latest version of Cake (2.5.1) and am having a problem
>>>>>>> with extremely slow connections to a MSSQL server. A controller action 
>>>>>>> that
>>>>>>> only has one simple select statement is taking an upwards of 50 seconds 
>>>>>>> to
>>>>>>> complete. I don't think it's the select statement itself, I have a 
>>>>>>> created
>>>>>>> an empty page that connects to MSSQL via PDO and executes the exact same
>>>>>>> statement and the result is instantaneous, so this leads me to believe 
>>>>>>> it's
>>>>>>> a problem with the MSSQL data source packaged with Cake. If it was a 
>>>>>>> driver
>>>>>>> or connection issue I would assume it would happen on the test page as
>>>>>>> well. Any ideas? I'm on PHP 5.3.x and am connecting to SQL Server 2008 
>>>>>>> R2.
>>>>>>>
>>>>>>> Jordan
>>>>>>>
>>>>>>  --
>>> Like Us on FaceBook https://www.facebook.com/CakePHP
>>> Find us on Twitter http://twitter.com/CakePHP
>>>
>>> ---
>>> You received this message because you are subscribed to a topic in the
>>> Google Groups "CakePHP" group.
>>> To unsubscribe from this topic, visit https://groups.google.com/d/
>>> topic/cake-php/2Vqixc1UGCw/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to
>>> [email protected].
>>> To post to this group, send email to [email protected].
>>>
>>> Visit this group at http://groups.google.com/group/cake-php.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>
>>
>> --
>> Alan Read
>>
>  --
> Like Us on FaceBook https://www.facebook.com/CakePHP
> Find us on Twitter http://twitter.com/CakePHP
>
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "CakePHP" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/cake-php/2Vqixc1UGCw/unsubscribe.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/cake-php.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Alan Read

-- 
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

--- 
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

Reply via email to