I've posted a bug to sourceforge as well:
https://sourceforge.net/tracker/index.php?func=detail&aid=2977680&group_id=237004&atid=1101662

On Sat, Mar 27, 2010 at 8:06 AM, dave <[email protected]> wrote:

> We're using the php beanstalk client:
> https://sourceforge.net/projects/beanstalk/
> and have run into cases where the script will get stuck in an infinite
> loop trying to read data from beanstalkd.  beanstalkd appears healthy
> and requires no restart/interaction but the infinite loop causes all
> communication w/beanstalk to cease.  In the logs we see the following:
>
> Mar 27 07:25:18 172.16.4.18 BeanStalkWrapper.class.php[26403]: PHP
> Warning:  stream_set_blocking(): supplied argument is not a valid
> stream resource in /var/www/virtuals/shared/lib/BeanStalk.class.php on
> line 1076
> Mar 27 07:25:18 172.16.4.18 BeanStalkWrapper.class.php[26403]: PHP
> Warning:  fread(): supplied argument is not a valid stream resource
> in /var/www/virtuals/shared/lib/BeanStalk.class.php on line 1087
> Mar 27 07:25:18 172.16.4.18 BeanStalkWrapper.class.php[26403]: PHP
> Warning:  stream_set_blocking(): supplied argument is not a valid
> stream resource in /var/www/virtuals/shared/lib/BeanStalk.class.php on
> line 1076
> Mar 27 07:25:18 172.16.4.18 BeanStalkWrapper.class.php[26403]: PHP
> Warning:  fread(): supplied argument is not a valid stream resource
> in /var/www/virtuals/shared/lib/BeanStalk.class.php on line 1087
>
> The function that's raising the warnings is:
>    private function read_message($in_buf_size=256,
> $in_operation_timeout=-1) {
>        stream_set_blocking($this->socket, 0);
>        $in_buf_size += strlen(self::MSG_DELIM);
>        $no_packet = true;         // Start off trying to hit up the
> buffer
>        $to = microtime(true) + $in_operation_timeout;
>        do {
>            if ($this->rbuflen < self::MAX_READ_BUF || $no_packet) {
>                // read new data if we are under the read buffer size
> or
>                // if we couldnt find a complete message in the buffer
> last
>                // time
>
>                $no_packet = false;
>                $data = fread($this->socket,$in_buf_size);
>
>                if ($data === false)
>                    return self::READ_ERROR;
>
>                if ($tbuflen = strlen($data))      // Got something.
> Put it in the buffer.
>                {
>                    $this->rbuf .= $data;
>                    $this->rbuflen += $tbuflen;
>                }
>            }
>
>            if ($this->rbuflen && ($pos = strpos($this->rbuf,
> self::MSG_DELIM, 0)) !== false) {
>                // Found a packet
>                $wanted_packet = substr($this->rbuf,0,$pos);
>                $seek = $pos+strlen(self::MSG_DELIM);
>                $this->rbuf = substr($this->rbuf,$seek);
>                if (strlen($wanted_packet)) {
>                    $this->rbuflen -= $seek;
>                    if (BeanStalk::DEBUG)
>                        echo __METHOD__."({$wanted_packet})\n";
>
>                    return $wanted_packet;
>                }
>            }
>
>            $no_packet = true;
>        } while ($tbuflen);
>
>        return self::READ_ERROR;
>    }
>
> Any help would be greatly appreciated.

-- 
You received this message because you are subscribed to the Google Groups 
"beanstalk-talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/beanstalk-talk?hl=en.

Reply via email to