Everyone, sorry to bother you with this, turns out I've been doing too
much programming in true functional languages, which PHP is not, and I
had some code which I thought was ok, but some how combined with a
call to json_decode caused PHP to crash. I was basically doing
something like:

function round_datetime(Zend_Date &$datetime) {
  $tmp = clone $datetime;
  $tmp->set(0, Zend_Date::SECOND);
  $tmp->set($tmp->get(Zend_Date::MINUTE)<30?0:30, Zend_Date::MINUTE);
  return $tmp;
}

To zero-out the seconds portion of a Zend_Date object and fix the
minutes to 0 or 30. I would then do something like:

public function fooAction() {

  $now = new Zend_Date();
  $min = round_datetime($now)->get('yyyy-MM-dd');

  // ...
  // Get JSON from API server using generated time above
  // ...

  json_decode($jsonString);
}

Now, since this worked without the json_decode call, I was under the
impression that the error was with json_decode, not my weird datetime
function. Well, I have removed the datetime function, and now
everything works. All of this has been very weird, because I don't see
how round_datetime + json_decode interacted in a way to crash PHP.
Perhaps some Zend people could provide a perspective?

Thanks for all help.

- jake



On Fri, Aug 15, 2008 at 3:51 PM, Jake McGraw <[EMAIL PROTECTED]> wrote:
> Terre:
>
> Thanks for the effort, but I have also been able to set up a basic
> Controller / Layout / View and get my code to work. There still
> appears to be some kind of intractable issue going on here that has to
> do with json_decode and Zend MVC will my existing code base. I'm going
> to try to refactor my code, and get this working. I'll report back my
> findings.
>
> - jake
>
> On Fri, Aug 15, 2008 at 2:37 PM, Terre Porter
> <[EMAIL PROTECTED]> wrote:
>>
>> I put together a basic test project.
>>
>> Used the layout and the view tpl you provided.
>>
>> I've got this as my controller function.
>>
>> public function indexAction()
>> {
>>        $jsonData = '--string from text file--';
>>        $result = json_decode($jsonData);
>>        var_dump($result);
>> }
>>
>> I get a "hello world" and a var dump of the json data.
>>
>> What needs to happen to the $results data for it to be used on the
>> layout/view?
>>
>> Terre
>>
>> -----Original Message-----
>> From: Jake McGraw [mailto:[EMAIL PROTECTED]
>> Sent: Friday, August 15, 2008 1:07 PM
>> To: Terre Porter; fw-general
>> Subject: Re: [fw-general] Zend_Json::decode in Controller causing Blank
>> Screen of Death
>>
>> On Fri, Aug 15, 2008 at 12:31 PM, Terre Porter
>> <[EMAIL PROTECTED]> wrote:
>>>
>>> I've been following this a little.
>>>
>>> If I understand this right...
>>>
>>> The json decode works if you dump the var but not if you allow the
>>> page to run through the view.
>>>
>>> What happens in the view?
>>>
>>> You mention these :
>>>
>>> -- sets HTML head
>>> -- spits out contents
>>
>> My Layout:
>>
>> <?php
>>
>>        // <meta>
>>        $this->headMeta()
>>                ->appendHttpEquiv('Content-Type', 'text/html;
>> charset=UTF-8')
>>                ->appendHttpEquiv('Content-Language', 'en-US');
>>
>>        $this->headTitle()
>>                ->headTitle('My Page', 'APPEND');
>>
>>        echo $this->doctype('XHTML1_STRICT');
>> ?>
>>
>> <html xmlns="http://www.w3.org/1999/xhtml";>
>>        <head>
>>                <?= $this->headMeta() ?>
>>
>>                <?= $this->headTitle() ?>
>>
>>        </head>
>>        <body>
>>                <?= $this->layout()->content ?>
>>
>>        </body>
>> </html>
>>
>> My View:
>> <h1>HELLO WORLD</h1>
>>
>> In the course of debugging this, I've tried to take out all of the possible
>> bugs, I've narrowed it down to one thing: attempting to json_decode a
>> perfectly valid JSON string, which I've attached, prior to preDispatch(),
>> View, Layout rendering causes blank screen.
>>
>> - jake
>>
>>>
>>> Does the view do anything to the data? i.e. expect a exact array key
>>> to exist?
>>>
>>> Just some thoughts
>>> Terre
>>>
>>>
>>> -----Original Message-----
>>> From: Jake McGraw [mailto:[EMAIL PROTECTED]
>>> Sent: Friday, August 15, 2008 12:13 PM
>>> To: [email protected]
>>> Subject: Re: [fw-general] Zend_Json::decode in Controller causing
>>> Blank Screen of Death
>>>
>>>> Comment out the above line and see what happens -- this is what the
>>>> previous comment was getting at.
>>>>
>>>
>>> Still not working, commented out line, restarted apache, same issue...
>>> I'm not sure that this is related to json/xdebug, as
>>> Zend_Json::decode/json_decode both operate correctly with the same
>>> JSON string outside of the Zend MVC, it is only when I use any of the
>>> following:
>>>
>>> Zend_Json::decode($jsonString);
>>>
>>> Zend_Json::$useBuiltinEncoderDecoder = TRUE
>>> Zend_Json::decode($jsonString);
>>>
>>> json_decode($jsonString, TRUE);
>>>
>>> and then allow Layout, View to render that I get the blank screen.
>>> Note, I'm not actually doing anything with the resulting PHP array
>>> from the decoding. I'm not passing it to the view, which simply sets
>>> the HTML head and spits out the content. I'm just attempting to dump it.
>>>
>>> Again, thanks for the help!
>>>
>>> - jake
>>>
>>>>
>>>>> Again, nothing in error reporting, logging, etc. Just a blank screen.
>>>>> Also, this works fine (same JSON) outside of Zend_Controller_Action.
>>>>>
>>>>> > -Matt
>>>>> >
>>>>> > On Fri, Aug 15, 2008 at 8:20 AM, Jake McGraw <[EMAIL PROTECTED]>
>>> wrote:
>>>>> >>
>>>>> >> I've spent the last two days struggling with this error:
>>>>> >>
>>>>> >> We've been utilizing REST-ful JSON server for a couple of months
>>>>> >> now
>>> to host our data api (it's written using Zend Framework). Our client
>>> apps access this API, and decode the JSON. Yesterday, one of our
>>> client apps stopped working, generating no errors, no ouput, just a
>>> blank screen. After commenting out the majority of the code, we found
>>> the following code was causing the grief:
>>>>> >>
>>>>> >> <?php
>>>>> >>
>>>>> >> // BaseController extends Zend_Controller_Action class
>>>>> >> CustomController extends BaseController {
>>>>> >>
>>>>> >>   public function someAction() {
>>>>> >>
>>>>> >>     $result = $this->api->get('resource', array('field1' =>
>>>>> >> 'value1'));
>>>>> >>
>>>>> >>     $result =
>>>>> >> Zend_Json::decode($result->getResponse()->getBody());
>>>>> >>
>>>>> >>     var_dump($result);
>>>>> >>
>>>>> >>     // exit;
>>>>> >>   }
>>>>> >>
>>>>> >> }
>>>>> >>
>>>>> >> Now, we only get the blank screen when we allow our dispatcher to
>>> render our Zend_Layout, Zend_View AFTER using Zend_Json::decode, all
>>> the following logic steps work fine:
>>>>> >>
>>>>> >> - Uncomment exit, prevent Layout, View rendering
>>>>> >> var_dump($result); exit;
>>>>> >>
>>>>> >> - Check body for valid JSON (everything OK in JSON Lint)
>>>>> >> - Layout, View render correctly
>>>>> >> var_dump($result->getResponse()->getBody());
>>>>> >>
>>>>> >> - Try another JSON string
>>>>> >> - Layout, View render correctly
>>>>> >> var_dump(Zend_Json::decode('[{"foo":"bar"}]'));
>>>>> >>
>>>>> >> The JSON looks something like this:
>>>>> >>
>>>>> >> [
>>>>> >>     {
>>>>> >>         "cm_broadcast_type": "National Broadcast Networks",
>>>>> >>         "id": "12659575",
>>>>> >>         "station_id": "12336",
>>>>> >>         "program_id": "EP010501290006",
>>>>> >>         "start_time": "20080814000000",
>>>>> >>         "end_time": "20080814010000",
>>>>> >>         "cc": "Y",
>>>>> >>         "title": "Greatest American Dog"
>>>>> >>     },
>>>>> >>     {
>>>>> >>         "cm_broadcast_type": "National Broadcast Networks",
>>>>> >>         "id": "11469048",
>>>>> >>         "station_id": "12336",
>>>>> >>         "program_id": "EP007537910036",
>>>>> >>         "start_time": "20080814010000",
>>>>> >>         "end_time": "20080814020000",
>>>>> >>         "cc": "Y",
>>>>> >>         "title": "Criminal Minds"
>>>>> >>     },
>>>>> >>     ... Continue ...
>>>>> >> ]
>>>>> >>
>>>>> >> So, as I've said, the problem only occurs when we allow the
>>>>> >> dispatcher
>>> to continue rendering Layout, View after using Zend_Json::decode, any
>>> help would be MUCH appreciated.
>>>>> >>
>>>>> >> - jake
>>>>>
>>>>
>>>> --
>>>> Matthew Weier O'Phinney
>>>> Software Architect       | [EMAIL PROTECTED]
>>>> Zend Framework           | http://framework.zend.com/
>>>>
>>>
>>>
>>
>>
>

Reply via email to