<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-27805953</id><updated>2009-02-21T08:04:49.244-08:00</updated><title type='text'>Guy Harpaz Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://guyharpaz.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27805953/posts/default'/><link rel='alternate' type='text/html' href='http://guyharpaz.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Guy Harpaz</name><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-27805953.post-114720619636798966</id><published>2006-05-09T13:14:00.000-07:00</published><updated>2006-05-11T00:15:01.066-07:00</updated><title type='text'>PHP IDE Debug Protocol</title><content type='html'>Lately there were many questions and comments on blogs and in PHP related forums regarding the debugger protocol, which will be used in the PHP IDE project at &lt;a href="http://www.eclipse.org/"&gt;Eclipse.org&lt;/a&gt;. For those of you who are not familiar with the 'debug protocol' term or do not know what I am talking about here is a short explanation.&lt;br /&gt;&lt;br /&gt;Debugging a PHP application or a PHP web server requires connectivity between an IDE and a Debugger engine (a PHP module which is installed on the web server). The debug protocol defines this connection. It determines how to initialize a debug session, which messages to use, etc. The level of debugging support, debugging performance, and the debugging extensibility are all derived from the debug protocol used.&lt;br /&gt;&lt;br /&gt;Today there are two leading debug protocols: &lt;a href="http://www.xdebug.org/docs-dbgp.php"&gt;DBGp&lt;/a&gt;, an open source protocol and &lt;a href="http://www.zend.com/products/zend_studio"&gt;Zend Studio's&lt;/a&gt; protocol. Both protocols have been used in commercial products in the last few years and are good solutions for debugging PHP applications and PHP web servers.&lt;br /&gt;&lt;br /&gt;When the Eclipse Foundation approved the PHP IDE project, Zend Studio's debug protocol was opened source and was chosen to be the debug protocol of the PHP IDE project. Zend Studio was known for its debugging capability and it is considered one of its big advantages, therefore, the decision to open source the protocol was obviously a big decision.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Why choose Zend Studio’s protocol? &lt;/span&gt;&lt;br /&gt;Choosing is difficult, but choosing between two good alternatives is even more difficult. Both protocols have proved to be good solutions. So why we chose one over the other, there are two main reasons:&lt;br /&gt;&lt;br /&gt;1.    We chose performance (binary based protocol) over easy server side implementation (textual based protocol).&lt;br /&gt;&lt;br /&gt;2.     We preferred a solution designed specifically for PHP and is not bounded to support additional scripting languages. DBGp supports several scripting languages and from this derives some of its disadvantages. We believe that a debug protocol should be as 'close' as possible to the PHP language.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;There are other differences between the two protocols and I will try to examine some of them:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Security&lt;/span&gt;&lt;br /&gt;DBGp has a built-in Proxy mechanism, which allows multiple users debugging applications on the same development server. The Proxy mechanism has few bugs in it and as written in the DBGp documentation, it is not well defined: “We should think a bit more about what a proxy might need to do”.&lt;br /&gt;The PHP IDE debug protocol does not specify requirements for a security system but defines that the Debug server should receive the client IP before initializing the session. By using the IP, implementing a security mechanism is very simple.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PHP Script Output and Errors&lt;/span&gt;&lt;br /&gt;DBGp supports PHP execution stdout and stderr as a general solution for all supported languages. PHP IDE as a specific protocol for PHP can distingue between header output and standard output and between all types of PHP errors (warnings, errors and notices).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27805953-114720619636798966?l=guyharpaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://guyharpaz.blogspot.com/feeds/114720619636798966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27805953&amp;postID=114720619636798966' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27805953/posts/default/114720619636798966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27805953/posts/default/114720619636798966'/><link rel='alternate' type='text/html' href='http://guyharpaz.blogspot.com/2006/05/php-ide-debug-protocol.html' title='PHP IDE Debug Protocol'/><author><name>Guy Harpaz</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06036313511241680504'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-27805953.post-114718788707248681</id><published>2006-05-09T08:11:00.000-07:00</published><updated>2006-05-09T08:41:36.843-07:00</updated><title type='text'>Welcome</title><content type='html'>Hello and welcome to my blog!&lt;br /&gt;My name is Guy Harpaz and I am the Product Manager of the PHP Developers Tools at &lt;a href="http://www.zend.com/"&gt;Zend&lt;/a&gt; and the PHP IDE Project Leader at &lt;a href="http://www.eclipse.org/"&gt;Eclipse.org&lt;/a&gt;. I have more than 6 years experience in the PHP market space in product management and development group management (before my current position I managed the Zend Development Tools R&amp;amp;D group).&lt;br /&gt;I hold a Bachelors Degree in Computer Science from The Prominent &lt;a href="https://www.idc.ac.il/eng/default.asp"&gt;Interdisciplinary Center Herzlia&lt;/a&gt; and am currently completing my obligations for an MBA from the &lt;a href="http://www.tau.ac.il/"&gt;University of Tel-Aviv&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;For me these are very interesting times at Zend and I would like to share my thoughts with you. I welcome feedback and I hope you will find my blog interesting.&lt;br /&gt;&lt;br /&gt;Guy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/27805953-114718788707248681?l=guyharpaz.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://guyharpaz.blogspot.com/feeds/114718788707248681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=27805953&amp;postID=114718788707248681' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/27805953/posts/default/114718788707248681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/27805953/posts/default/114718788707248681'/><link rel='alternate' type='text/html' href='http://guyharpaz.blogspot.com/2006/05/welcome.html' title='Welcome'/><author><name>Guy Harpaz</name><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='06036313511241680504'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry></feed>