cvs: pear-core / package-PEAR.xml package2.xml /PEAR/Command Remote.php /PEAR/REST 11.php
| From: | Greg Beaver | Date: | Sat, 22 Oct 2005 05:15:50 +0000 |
| Subject: | cvs: pear-core / package-PEAR.xml package2.xml /PEAR/Command Remote.php /PEAR/REST 11.php | ||
| Groups: | php.pear.cvs php.pear.core | ||
| Request: | Send a blank email to pear-cvs+get-35764@lists.php.net to get a copy of this message | ||
cellog Sat Oct 22 01:15:50 2005 EDT
Added files:
/pear-core/PEAR/REST 11.php
Modified files:
/pear-core/PEAR/Command Remote.php
/pear-core package-PEAR.xml package2.xml
Log:
implement incredible improvement in processing speed of list-all/remote-list
# yayyyyy!
http://cvs.php.net/diff.php/pear-core/PEAR/Command/Remote.php?r1=1.82&r2=1.83&ty=u Index: pear-core/PEAR/Command/Remote.php diff -u pear-core/PEAR/Command/Remote.php:1.82 pear-core/PEAR/Command/Remote.php:1.83 --- pear-core/PEAR/Command/Remote.php:1.82 Sun Sep 25 13:28:30 2005 +++ pear-core/PEAR/Command/Remote.php Sat Oct 22 01:15:49 2005 @@ -17,7 +17,7 @@ * @author Greg Beaver <cellog@php.net> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Remote.php,v 1.82 2005/09/25 17:28:30 cellog Exp $ + * @version CVS: $Id: Remote.php,v 1.83 2005/10/22 05:15:49 cellog Exp $ * @link http://pear.php.net/package/PEAR * @since File available since Release 0.1 */ @@ -222,6 +222,11 @@ $list_options = true; } if ($chan->supportsREST($this->config->get('preferred_mirror')) && + $base = $chan->getBaseURL('REST1.1', $this->config->get('preferred_mirror'))) { + // use faster list-all if available + $rest = &$this->config->getREST('1.1', array()); + $available = $rest->listAll($base, $list_options); + } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) && $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { $rest = &$this->config->getREST('1.0', array()); $available = $rest->listAll($base, $list_options); @@ -278,6 +283,11 @@ } $chan = $reg->getChannel($channel); if ($chan->supportsREST($this->config->get('preferred_mirror')) && + $base = $chan->getBaseURL('REST1.1', $this->config->get('preferred_mirror'))) { + // use faster list-all if available + $rest = &$this->config->getREST('1.1', array()); + $available = $rest->listAll($base, $list_options, false); + } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) && $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { $rest = &$this->config->getREST('1.0', array()); $available = $rest->listAll($base, $list_options, false); http://cvs.php.net/diff.php/pear-core/package-PEAR.xml?r1=1.291&r2=1.292&ty=u Index: pear-core/package-PEAR.xml diff -u pear-core/package-PEAR.xml:1.291 pear-core/package-PEAR.xml:1.292 --- pear-core/package-PEAR.xml:1.291 Thu Oct 20 18:32:13 2005 +++ pear-core/package-PEAR.xml Sat Oct 22 01:15:49 2005 @@ -78,6 +78,10 @@ in CLI frontend * fix validation of <postinstallscript> * fix writeable PEAR_Task_Postinstallscript_rw class + * fix error in REST-based search command if searching through description + as well + * implement SERIOUS improvement in list-all/remote-list speed. From 6 minutes + down to about 16-30 seconds * fix Bug #5717: analyzeSourceCode() fails to process certain quote situations properly * fix Bug #5736: if registry can't lock registry or open filemap, @@ -237,6 +241,9 @@ <file role="php" name="10.php"> <replace from="@package_version@" to="version" type="package-info"/> </file> + <file role="php" name="11.php"> + <replace from="@package_version@" to="version" type="package-info"/> + </file> </dir> <dir name="Task"> <dir name="Postinstallscript"> http://cvs.php.net/diff.php/pear-core/package2.xml?r1=1.183&r2=1.184&ty=u Index: pear-core/package2.xml diff -u pear-core/package2.xml:1.183 pear-core/package2.xml:1.184 --- pear-core/package2.xml:1.183 Thu Oct 20 18:32:14 2005 +++ pear-core/package2.xml Sat Oct 22 01:15:50 2005 @@ -83,6 +83,10 @@ in CLI frontend * fix validation of <postinstallscript> * fix writeable PEAR_Task_Postinstallscript_rw class + * fix error in REST-based search command if searching through description + as well + * implement SERIOUS improvement in list-all/remote-list speed. From 6 minutes + down to about 16-30 seconds * fix Bug #5717: analyzeSourceCode() fails to process certain quote situations properly * fix Bug #5736: if registry can't lock registry or open filemap, @@ -229,6 +233,9 @@ <file name="10.php" role="php"> <tasks:replace from="@package_version@" to="version" type="package-info" /> </file> + <file name="11.php" role="php"> + <tasks:replace from="@package_version@" to="version" type="package-info" /> + </file> </dir> <!-- /PEAR/REST --> <dir name="Task"> <dir name="Postinstallscript"> http://cvs.php.net/co.php/pear-core/PEAR/REST/11.php?r=1.1&p=1 Index: pear-core/PEAR/REST/11.php +++ pear-core/PEAR/REST/11.php <?php /** * PEAR_REST_11 - implement faster list-all/remote-list command * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category pear * @package PEAR * @author Greg Beaver <cellog@php.net> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version CVS: $Id: 11.php,v 1.1 2005/10/22 05:15:50 cellog Exp $ * @link http://pear.php.net/package/PEAR * @since File available since Release 1.4.3 */ /** * For downloading REST xml/txt files */ require_once 'PEAR/REST.php'; /** * Implement REST 1.1 * * @category pear * @package PEAR * @author Greg Beaver <cellog@php.net> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version Release: @package_version@ * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.3 */ class PEAR_REST_11 { /** * @var PEAR_REST */ var $_rest; function PEAR_REST_11($config, $options = array()) { $this->_rest = &new PEAR_REST($config, $options); } function listAll($base, $dostable, $basic = true) { $categorylist = $this->_rest->retrieveData($base . 'c/categories.xml'); if (PEAR::isError($categorylist)) { return $categorylist; } $ret = array(); if (!is_array($categorylist['c'])) { $categorylist['c'] = array($categorylist['c']); } PEAR::pushErrorHandling(PEAR_ERROR_RETURN); foreach ($categorylist['c'] as $progress => $category) { $category = $category['_content']; $packagesinfo = $this->_rest->retrieveData($base . 'c/' . urlencode($category) . '/packagesinfo.xml'); if (PEAR::isError($packagesinfo)) { continue; } if (!is_array($packagesinfo) || !isset($packagesinfo['pi'])) { continue; } if (!is_array($packagesinfo['pi']) || !isset($packagesinfo['pi'][0])) { $packagesinfo['pi'] = array($packagesinfo['pi']); } foreach ($packagesinfo['pi'] as $packageinfo) { $info = $packageinfo['p']; $package = $info['n']; $releases = isset($packageinfo['a']) ? $packageinfo['a'] : false; unset($latest); unset($unstable); unset($stable); unset($state); if ($release) { if (!isset($releases['r'][0])) { $releases['r'] = array($releases['r']); } foreach ($releases['r'] as $release) { if (!isset($latest)) { if ($dostable && $release['s'] == 'stable') { $latest = $release['v']; $state = 'stable'; } if (!$dostable) { $latest = $release['v']; $state = $release['s']; } } if (!isset($stable) && $release['s'] == 'stable') { $stable = $release['v']; if (!isset($unstable)) { $unstable = $stable; } } if (!isset($unstable) && $release['s'] != 'stable') { $latest = $unstable = $release['v']; $state = $release['s']; } if (isset($latest) && !isset($state)) { $state = $release['s']; } if (isset($latest) && isset($stable) && isset($unstable)) { break; } } } if ($basic) { // remote-list command if (!isset($latest)) { $latest = false; } $ret[$package] = array('stable' => $latest); continue; } // list-all command $deps = array(); if (!isset($unstable)) { $unstable = false; $state = 'stable'; if (isset($stable)) { $latest = $unstable = $stable; } } else { $latest = $unstable; } if (!isset($latest)) { $latest = false; } if ($latest) { if (isset($packageinfo['deps'])) { if (!isset($packageinfo['deps'][0])) { $packageinfo['deps'] = array($packageinfo['deps']); } } $d = false; foreach ($packageinfo['deps'] as $dep) { if ($dep['v'] == $latest) { $d = unserialize($dep['d']); } } if ($d) { if (isset($d['required'])) { if (!class_exists('PEAR_PackageFile_v2')) { require_once 'PEAR/PackageFile/v2.php'; } if (!isset($pf)) { $pf = new PEAR_PackageFile_v2; } $pf->setDeps($d); $tdeps = $pf->getDeps(); } else { $tdeps = $d; } foreach ($tdeps as $dep) { if ($dep['type'] !== 'pkg') { continue; } $deps[] = $dep; } } } if (!isset($stable)) { $stable = '-n/a-'; } $info = array('stable' => $latest, 'summary' => $info['s'], 'description' => $info['d'], 'deps' => $deps, 'category' => $info['ca']['_content'], 'unstable' => $unstable, 'state' => $state); $ret[$package] = $info; } } PEAR::popErrorHandling(); return $ret; } /** * Return an array containing all of the states that are more stable than * or equal to the passed in state * * @param string Release state * @param boolean Determines whether to include $state in the list * @return false|array False if $state is not a valid release state */ function betterStates($state, $include = false) { static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable'); $i = array_search($state, $states); if ($i === false) { return false; } if ($include) { $i--; } return array_slice($states, $i + 1); } } ?>
http://cvs.php.net/diff.php/pear-core/PEAR/Command/Remote.php?r1=1.82&r2=1.83&ty=u Index: pear-core/PEAR/Command/Remote.php diff -u pear-core/PEAR/Command/Remote.php:1.82 pear-core/PEAR/Command/Remote.php:1.83 --- pear-core/PEAR/Command/Remote.php:1.82 Sun Sep 25 13:28:30 2005 +++ pear-core/PEAR/Command/Remote.php Sat Oct 22 01:15:49 2005 @@ -17,7 +17,7 @@ * @author Greg Beaver <cellog@php.net> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Remote.php,v 1.82 2005/09/25 17:28:30 cellog Exp $ + * @version CVS: $Id: Remote.php,v 1.83 2005/10/22 05:15:49 cellog Exp $ * @link http://pear.php.net/package/PEAR * @since File available since Release 0.1 */ @@ -222,6 +222,11 @@ $list_options = true; } if ($chan->supportsREST($this->config->get('preferred_mirror')) && + $base = $chan->getBaseURL('REST1.1', $this->config->get('preferred_mirror'))) { + // use faster list-all if available + $rest = &$this->config->getREST('1.1', array()); + $available = $rest->listAll($base, $list_options); + } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) && $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { $rest = &$this->config->getREST('1.0', array()); $available = $rest->listAll($base, $list_options); @@ -278,6 +283,11 @@ } $chan = $reg->getChannel($channel); if ($chan->supportsREST($this->config->get('preferred_mirror')) && + $base = $chan->getBaseURL('REST1.1', $this->config->get('preferred_mirror'))) { + // use faster list-all if available + $rest = &$this->config->getREST('1.1', array()); + $available = $rest->listAll($base, $list_options, false); + } elseif ($chan->supportsREST($this->config->get('preferred_mirror')) && $base = $chan->getBaseURL('REST1.0', $this->config->get('preferred_mirror'))) { $rest = &$this->config->getREST('1.0', array()); $available = $rest->listAll($base, $list_options, false); http://cvs.php.net/diff.php/pear-core/package-PEAR.xml?r1=1.291&r2=1.292&ty=u Index: pear-core/package-PEAR.xml diff -u pear-core/package-PEAR.xml:1.291 pear-core/package-PEAR.xml:1.292 --- pear-core/package-PEAR.xml:1.291 Thu Oct 20 18:32:13 2005 +++ pear-core/package-PEAR.xml Sat Oct 22 01:15:49 2005 @@ -78,6 +78,10 @@ in CLI frontend * fix validation of <postinstallscript> * fix writeable PEAR_Task_Postinstallscript_rw class + * fix error in REST-based search command if searching through description + as well + * implement SERIOUS improvement in list-all/remote-list speed. From 6 minutes + down to about 16-30 seconds * fix Bug #5717: analyzeSourceCode() fails to process certain quote situations properly * fix Bug #5736: if registry can't lock registry or open filemap, @@ -237,6 +241,9 @@ <file role="php" name="10.php"> <replace from="@package_version@" to="version" type="package-info"/> </file> + <file role="php" name="11.php"> + <replace from="@package_version@" to="version" type="package-info"/> + </file> </dir> <dir name="Task"> <dir name="Postinstallscript"> http://cvs.php.net/diff.php/pear-core/package2.xml?r1=1.183&r2=1.184&ty=u Index: pear-core/package2.xml diff -u pear-core/package2.xml:1.183 pear-core/package2.xml:1.184 --- pear-core/package2.xml:1.183 Thu Oct 20 18:32:14 2005 +++ pear-core/package2.xml Sat Oct 22 01:15:50 2005 @@ -83,6 +83,10 @@ in CLI frontend * fix validation of <postinstallscript> * fix writeable PEAR_Task_Postinstallscript_rw class + * fix error in REST-based search command if searching through description + as well + * implement SERIOUS improvement in list-all/remote-list speed. From 6 minutes + down to about 16-30 seconds * fix Bug #5717: analyzeSourceCode() fails to process certain quote situations properly * fix Bug #5736: if registry can't lock registry or open filemap, @@ -229,6 +233,9 @@ <file name="10.php" role="php"> <tasks:replace from="@package_version@" to="version" type="package-info" /> </file> + <file name="11.php" role="php"> + <tasks:replace from="@package_version@" to="version" type="package-info" /> + </file> </dir> <!-- /PEAR/REST --> <dir name="Task"> <dir name="Postinstallscript"> http://cvs.php.net/co.php/pear-core/PEAR/REST/11.php?r=1.1&p=1 Index: pear-core/PEAR/REST/11.php +++ pear-core/PEAR/REST/11.php <?php /** * PEAR_REST_11 - implement faster list-all/remote-list command * * PHP versions 4 and 5 * * LICENSE: This source file is subject to version 3.0 of the PHP license * that is available through the world-wide-web at the following URI: * http://www.php.net/license/3_0.txt. If you did not receive a copy of * the PHP License and are unable to obtain it through the web, please * send a note to license@php.net so we can mail you a copy immediately. * * @category pear * @package PEAR * @author Greg Beaver <cellog@php.net> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version CVS: $Id: 11.php,v 1.1 2005/10/22 05:15:50 cellog Exp $ * @link http://pear.php.net/package/PEAR * @since File available since Release 1.4.3 */ /** * For downloading REST xml/txt files */ require_once 'PEAR/REST.php'; /** * Implement REST 1.1 * * @category pear * @package PEAR * @author Greg Beaver <cellog@php.net> * @copyright 1997-2005 The PHP Group * @license http://www.php.net/license/3_0.txt PHP License 3.0 * @version Release: @package_version@ * @link http://pear.php.net/package/PEAR * @since Class available since Release 1.4.3 */ class PEAR_REST_11 { /** * @var PEAR_REST */ var $_rest; function PEAR_REST_11($config, $options = array()) { $this->_rest = &new PEAR_REST($config, $options); } function listAll($base, $dostable, $basic = true) { $categorylist = $this->_rest->retrieveData($base . 'c/categories.xml'); if (PEAR::isError($categorylist)) { return $categorylist; } $ret = array(); if (!is_array($categorylist['c'])) { $categorylist['c'] = array($categorylist['c']); } PEAR::pushErrorHandling(PEAR_ERROR_RETURN); foreach ($categorylist['c'] as $progress => $category) { $category = $category['_content']; $packagesinfo = $this->_rest->retrieveData($base . 'c/' . urlencode($category) . '/packagesinfo.xml'); if (PEAR::isError($packagesinfo)) { continue; } if (!is_array($packagesinfo) || !isset($packagesinfo['pi'])) { continue; } if (!is_array($packagesinfo['pi']) || !isset($packagesinfo['pi'][0])) { $packagesinfo['pi'] = array($packagesinfo['pi']); } foreach ($packagesinfo['pi'] as $packageinfo) { $info = $packageinfo['p']; $package = $info['n']; $releases = isset($packageinfo['a']) ? $packageinfo['a'] : false; unset($latest); unset($unstable); unset($stable); unset($state); if ($release) { if (!isset($releases['r'][0])) { $releases['r'] = array($releases['r']); } foreach ($releases['r'] as $release) { if (!isset($latest)) { if ($dostable && $release['s'] == 'stable') { $latest = $release['v']; $state = 'stable'; } if (!$dostable) { $latest = $release['v']; $state = $release['s']; } } if (!isset($stable) && $release['s'] == 'stable') { $stable = $release['v']; if (!isset($unstable)) { $unstable = $stable; } } if (!isset($unstable) && $release['s'] != 'stable') { $latest = $unstable = $release['v']; $state = $release['s']; } if (isset($latest) && !isset($state)) { $state = $release['s']; } if (isset($latest) && isset($stable) && isset($unstable)) { break; } } } if ($basic) { // remote-list command if (!isset($latest)) { $latest = false; } $ret[$package] = array('stable' => $latest); continue; } // list-all command $deps = array(); if (!isset($unstable)) { $unstable = false; $state = 'stable'; if (isset($stable)) { $latest = $unstable = $stable; } } else { $latest = $unstable; } if (!isset($latest)) { $latest = false; } if ($latest) { if (isset($packageinfo['deps'])) { if (!isset($packageinfo['deps'][0])) { $packageinfo['deps'] = array($packageinfo['deps']); } } $d = false; foreach ($packageinfo['deps'] as $dep) { if ($dep['v'] == $latest) { $d = unserialize($dep['d']); } } if ($d) { if (isset($d['required'])) { if (!class_exists('PEAR_PackageFile_v2')) { require_once 'PEAR/PackageFile/v2.php'; } if (!isset($pf)) { $pf = new PEAR_PackageFile_v2; } $pf->setDeps($d); $tdeps = $pf->getDeps(); } else { $tdeps = $d; } foreach ($tdeps as $dep) { if ($dep['type'] !== 'pkg') { continue; } $deps[] = $dep; } } } if (!isset($stable)) { $stable = '-n/a-'; } $info = array('stable' => $latest, 'summary' => $info['s'], 'description' => $info['d'], 'deps' => $deps, 'category' => $info['ca']['_content'], 'unstable' => $unstable, 'state' => $state); $ret[$package] = $info; } } PEAR::popErrorHandling(); return $ret; } /** * Return an array containing all of the states that are more stable than * or equal to the passed in state * * @param string Release state * @param boolean Determines whether to include $state in the list * @return false|array False if $state is not a valid release state */ function betterStates($state, $include = false) { static $states = array('snapshot', 'devel', 'alpha', 'beta', 'stable'); $i = array_search($state, $states); if ($i === false) { return false; } if ($include) { $i--; } return array_slice($states, $i + 1); } } ?>