瀏覽代碼

Caching + all links update

Andrew Tch 13 年之前
父節點
當前提交
51dcaab925

+ 27 - 13
src/Packagist/WebBundle/Entity/PackageRepository.php

@@ -19,23 +19,36 @@ use Doctrine\ORM\EntityRepository;
  */
 class PackageRepository extends EntityRepository
 {
+
     public function packageExists($package)
     {
         return in_array($package, $this->getPackageNames());
     }
-    
+
     public function getPackageNames()
     {
-        //todo: caching
-        $names = array_map(function($value) {
-            return $value['name'];
-        }, $this->getEntityManager()
-                ->createQuery("SELECT p.name FROM Packagist\WebBundle\Entity\Package p")
-                ->getResult());
-        
+        //todo: move caching to some mature bundle, not apc
+        //use container to set caching key and ttl
+        if (extension_loaded('apc')) {
+            $names = apc_fetch('packagist_package_names');
+        }
+
+        if ($names === false) {
+            $names = array_map(function($value)
+                    {
+                        return $value['name'];
+                    }, $this->getEntityManager()
+                            ->createQuery("SELECT p.name FROM Packagist\WebBundle\Entity\Package p")
+                            ->getResult());
+
+            if (extension_loaded('apc')) {
+                apc_store('packagist_package_names', $names, 3600);
+            }
+        }
+
         return $names;
     }
-    
+
     public function getStalePackages()
     {
         $qb = $this->getEntityManager()->createQueryBuilder();
@@ -70,10 +83,10 @@ class PackageRepository extends EntityRepository
     public function findByTag($name)
     {
         return $this->getBaseQueryBuilder()
-            // eliminate maintainers & tags from the select, because of the groupBy
-            ->select('p, v')
-            ->where('t.name = ?0')
-            ->setParameters(array($name));
+                    // eliminate maintainers & tags from the select, because of the groupBy
+                    ->select('p, v')
+                    ->where('t.name = ?0')
+                    ->setParameters(array($name));
     }
 
     public function getQueryBuilderByMaintainer(User $user)
@@ -98,4 +111,5 @@ class PackageRepository extends EntityRepository
             ->addOrderBy('v.releasedAt', 'DESC');
         return $qb;
     }
+
 }

+ 6 - 7
src/Packagist/WebBundle/Resources/views/Web/viewPackage.html.twig

@@ -81,8 +81,7 @@
                                             {% if version.require|length %}
                                                 <ul>
                                                     {%- for req in version.require -%}
-                                                        <li>
-                                                            {{ packagist.package_link(req.packageName) }}: {{ req.packageVersion }}</li>
+                                                        <li>{{ packagist.package_link(req.packageName) }}: {{ req.packageVersion }}</li>
                                                     {%- endfor -%}
                                                 </ul>
                                             {% else %}
@@ -94,7 +93,7 @@
                                             {% if version.recommend|length %}
                                                 <ul>
                                                     {%- for req in version.recommend -%}
-                                                        <li>{{ req.packageName }}: {{ req.packageVersion }}</li>
+                                                        <li>{{ packagist.package_link(req.packageName) }}: {{ req.packageVersion }}</li>
                                                     {%- endfor -%}
                                                 </ul>
                                             {% else %}
@@ -106,7 +105,7 @@
                                             {% if version.suggest|length %}
                                                 <ul>
                                                     {%- for req in version.suggest -%}
-                                                        <li>{{ req.packageName }}: {{ req.packageVersion }}</li>
+                                                        <li>{{ packagist.package_link(req.packageName) }}: {{ req.packageVersion }}</li>
                                                     {%- endfor -%}
                                                 </ul>
                                             {% else %}
@@ -118,7 +117,7 @@
                                             {% if version.provide|length %}
                                                 <ul>
                                                     {%- for req in version.provide -%}
-                                                        <li>{{ req.packageName }}: {{ req.packageVersion }}</li>
+                                                        <li>{{ packagist.package_link(req.packageName) }}: {{ req.packageVersion }}</li>
                                                     {%- endfor -%}
                                                 </ul>
                                             {% else %}
@@ -130,7 +129,7 @@
                                             {% if version.conflict|length %}
                                                 <ul>
                                                     {%- for req in version.conflict -%}
-                                                        <li>{{ req.packageName }}: {{ req.packageVersion }}</li>
+                                                        <li>{{ packagist.package_link(req.packageName) }}: {{ req.packageVersion }}</li>
                                                     {%- endfor -%}
                                                 </ul>
                                             {% else %}
@@ -142,7 +141,7 @@
                                             {% if version.replace|length %}
                                                 <ul>
                                                     {%- for req in version.replace -%}
-                                                        <li>{{ req.packageName }}: {{ req.packageVersion }}</li>
+                                                        <li>{{ packagist.package_link(req.packageName) }} {{ req.packageVersion }}</li>
                                                     {%- endfor -%}
                                                 </ul>
                                             {% else %}