rasmus          Thu Jun 15 20:49:05 2006 UTC

  Modified files:              (Branch: PHP_5_2)
    /php-src/ext/soap   php_encoding.c 
  Log:
  MFH:
  I don't think the call to xmlNodeSetContentLen() is needed here and
  it is causing performance problems because it tries to parse the blob
  and create a subtree.  Because we are escaping the string anyway, we
  are never going to get a subtree, but the entity parsing that is done
  by xmlNodeSetContentLen() is killing performance on large blobs of
  text.  On one recent example it took a couple of minutes to parse
  whereas if we just create a text node like this and set the contents
  to the raw string it is down to milliseconds.
  
  
http://cvs.php.net/viewcvs.cgi/php-src/ext/soap/php_encoding.c?r1=1.103.2.21.2.1&r2=1.103.2.21.2.2&diff_format=u
Index: php-src/ext/soap/php_encoding.c
diff -u php-src/ext/soap/php_encoding.c:1.103.2.21.2.1 
php-src/ext/soap/php_encoding.c:1.103.2.21.2.2
--- php-src/ext/soap/php_encoding.c:1.103.2.21.2.1      Fri May 26 09:02:33 2006
+++ php-src/ext/soap/php_encoding.c     Thu Jun 15 20:49:05 2006
@@ -17,7 +17,7 @@
   |          Dmitry Stogov <[EMAIL PROTECTED]>                             |
   +----------------------------------------------------------------------+
 */
-/* $Id: php_encoding.c,v 1.103.2.21.2.1 2006/05/26 09:02:33 dmitry Exp $ */
+/* $Id: php_encoding.c,v 1.103.2.21.2.2 2006/06/15 20:49:05 rasmus Exp $ */
 
 #include <time.h>
 
@@ -727,7 +727,7 @@
 
 static xmlNodePtr to_xml_string(encodeTypePtr type, zval *data, int style, 
xmlNodePtr parent)
 {
-       xmlNodePtr ret;
+       xmlNodePtr ret, text;
        char *str;
        int new_len;
        TSRMLS_FETCH();
@@ -737,13 +737,15 @@
        FIND_ZVAL_NULL(data, ret, style);
 
        if (Z_TYPE_P(data) == IS_STRING) {
-               str = php_escape_html_entities(Z_STRVAL_P(data), 
Z_STRLEN_P(data), &new_len, 0, 0, NULL TSRMLS_CC);
+               str = estrndup(Z_STRVAL_P(data), Z_STRLEN_P(data));
+               new_len = Z_STRLEN_P(data);
        } else {
                zval tmp = *data;
 
                zval_copy_ctor(&tmp);
                convert_to_string(&tmp);
-               str = php_escape_html_entities(Z_STRVAL(tmp), Z_STRLEN(tmp), 
&new_len, 0, 0, NULL TSRMLS_CC);
+               str = estrndup(Z_STRVAL(tmp), Z_STRLEN(tmp));
+               new_len = Z_STRLEN(tmp);
                zval_dtor(&tmp);
        }
 
@@ -765,7 +767,8 @@
                soap_error1(E_ERROR,  "Encoding: string '%s' is not a valid 
utf-8 string", str);
        }
 
-       xmlNodeSetContentLen(ret, str, new_len);
+       text = xmlNewTextLen(str, new_len);
+       xmlAddChild(ret, text);
        efree(str);
 
        if (style == SOAP_ENCODED) {

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to