"Popular Packages"
| From: | Alexey Borzov | Date: | Sat, 29 Oct 2011 10:23:20 +0000 |
| Subject: | "Popular Packages" | ||
| Groups: | php.pear.dev php.pear.webmaster | ||
| Request: | Send a blank email to pear-dev+get-54543@lists.php.net to get a copy of this message | ||
Hi,
Can someone with access to a PEAR website database check what is wrong with "Popular Packages" list?
Specifically, I'm seeing Net_URL2 2.0.0 released 2011-10-20 here with 495 downloads a day, but I'm not seeing HTTP_Request2 2.0.0 released 2011-10-20 with ~336 downloads a day.
I've looked up a query in pearweb and it looks legit:
SELECT
packages.name, releases.version, downloads, releasedate,
downloads/(CEIL((unix_timestamp(NOW()) - unix_timestamp(releases.releasedate))/86400)) as releasenotes
FROM releases, packages, aggregated_package_stats a
WHERE
packages.name <> "pearweb" AND
packages.name <> "pearweb_phars" AND
packages.id = releases.package AND
packages.package_type = ? AND
a.release_id = releases.id AND
a.package_id = packages.id AND
packages.newpk_id IS NULL AND
packages.unmaintained = 0 AND
a.yearmonth = "' . date('Y-m-01 00:00:00', time()) . '"
ORDER BY releasenotes DESC';
However, knowing MySQL's creative approach to data integrity, the part about "packages.newpk_id IS NULL" may be a problem. This newpk_id is changed in package-edit.php and stored the following way into the DB:
$qparams = array(...
isset($_POST['newpk_id']) ? $_POST['newpk_id'] : null,...
);I suspect that $_POST['newpk_id'] is always isset(), so an empty string is sent to a database and creatively converted to something like zero by MySQL. I also suspect that quite a number of packages may be affected. Also WTF is File_Mogile? Does it really have 100K downloads a month or is this creative approach to foreign key constraints? http://pear.php.net/package-stats.php?pid=843&cid=9