უკან დაბრუნება
2014 წლის დროებითი PHP გამოსავალი 20 მილიონამდე ინსტალაციას აღწევს — ახლა მოძველებულია
SiTech AI Team2 წთ. საკითხავი

2014 წლის დროებითი PHP გამოსავალი 20 მილიონამდე ინსტალაციას აღწევს — ახლა მოძველებულია

ჯეიკ ა. სმიტმა 2014 წელს AOL-ის CMS-ისთვის 174 სტრიქონი PHP დაწერა. თითქმის 20 მილიონი ინსტალაციის შემდეგ ავტორმა პაკეტი მოძველებულად გამოაცხადა და დეველოპერებს PHP 8.5-ის URI API-სკენ მიუთითა.

2014 წელს ჯეიკ ა. სმიტმა 174 სტრიქონი PHP დაწერა AOL-ის კონტენტის მართვის სისტემისთვის დროებით გამოსავლად. კოდი Packagist-ზე გამოაქვეყნა, თუ ვინმეს იგივე შესწორება დასჭირდებოდა. თორმეტი წლის შემდეგ ის თითქმის 20 მილიონჯერ არის დაყენებული, 15 სექტემბერს კი ავტორმა ის მოძველებულად მონიშნა.

დროებითი შუალედური გამოსავალი

საქმე AOL-ის CMS-ის PHP 5.2-დან 5.3-ზე გადაყვანას ეხებოდა და განახლების ნაწილი pecl_http გაფართოების პირველი ვერსიის მოხსნა იყო — სწორედ ის უზრუნველყოფდა ფუნქციას http_build_url(). კონტენტის მართვის სისტემა უამრავ URL-ს დაამუშავებს, ამ სისტემას კი ეს ფუნქცია ათეულობით ადგილას ეძახდა, რომელთა შეცვლაც სმიტს არ სურდა. მან ის თავიდან დაწერა და საკუთარი http_build_url() მხოლოდ მაშინ განსაზღვრა, თუ ნამდვილი უკვე არ არსებობდა, ასე რომ ძველმა კოდმა ცვლილება ვერ შეამჩნია. იმ დროს Composer ახლად იწყებდა გავრცელებას, რამაც კოდის გაზიარება იოლი გახადა, და ავტორი ვარაუდობდა, რომ გამოსავალი ერთ-ორ წელს გაძლებდა.

ეს ბევრი ინსტალაციაა

დროებითი არ აღმოჩნდა. პოსტს თანდართული Packagist-ის სტატისტიკა აჩვენებს 19 864 271 მთლიან ინსტალაციას და 401 308 ინსტალაციას ბოლო 30 დღეში; დღიური რიცხვი 2014 წლის თითქმის ნულიდან 2026 წელს დღეში დაახლოებით 13 000-მდე გაიზარდა. Composer მთელი სურათის მხოლოდ ნაწილია: WPML, WordPress-ის წამყვანი მრავალენოვანი პლაგინი, ამ კოდს საკუთარ კოდბაზაში ატანს და 1.5 მილიონზე მეტ საიტზეა დაყენებული, დომენების ბიბლიოთეკა idna-convert კი მასზეა დამოკიდებული — სწორედ ასე მოხვდა კოდი ფრანგული CMS-ის, SPIP-ის წყაროებში და შემდეგ Debian-ისა და Ubuntu-ს პაკეტებში.

წლების შემდეგ პაკეტს რომ დაუბრუნდა, სმიტმა ხარვეზიც იპოვა: ბილიკის URL-ზე მიმაგრება, რომელსაც ბოლოში დახრილი ხაზი აქვს, ბილიკიდან ყველა ასო a-ს შლის. კომენტარის ქვეშ, სადაც ბოლო დახრილი ხაზისთვის გვერდის ავლაა აღწერილი, კოდი ბილიკს ზედმეტ a-ს ამატებს, რომ ყოველთვის იყოს ბოლო სეგმენტი მოსაჭრელად, და შემდეგ მას ძებნა-ჩანაცვლებით წყვეტს. როცა ბილიკი დახრილი ხაზით მთავრდება, ეს ჩანაცვლება ყველა დანარჩენ a-საც შლის. 2021 წელს მან პაკეტისთვის ახალი მზრუნველი მოითხოვა, სამი ადამიანი გამოთქვა სურვილი, მაგრამ ოჯახში მოულოდნელი დანაკარგი მოხდა, საქმე ვერ გააგრძელა და პაკეტი წლების განმავლობაში უყურადღებოდ დარჩა.

მოძველება გადაცემის ნაცვლად

სმიტმა პაკეტის არც თავად გაცოცხლება არჩია და არც სხვისთვის გადაცემა. PHP League-ის URI ბიბლიოთეკა უკვე წლებია საზოგადოების პასუხია, PHP 8.5 კი სტანდარტებთან შესაბამის URI API-ს თავად ენაშივე ატანს; ორივე 2014 წლის 174-სტრიქონიან შუალედურ გამოსავალზე უკეთესია, და პაკეტის შენარჩუნება მხოლოდ გადასვლას შეაყოვნებდა. ფართოდ დაყენებული პაკეტის გადაცემა მზრუნველისთვის, რომლის კოდი ქვემოთ მდგომმა ვერავინ შეამოწმა, მისი აზრით, სწორედ ისაა, რასაც თავდამსხმელები ეძებენ. პაკეტი დაყენებას გააგრძელებს, მაგრამ ახალ შესწორებებს ვეღარ მიიღებს, მათ შორის a-ს ხარვეზისას, ვინაიდან ერთსტრიქონიან ცვლილებასაც შეიძლება მოულოდნელი შედეგები ჰქონდეს, თუ მხარდამჭერი აღარავინაა; README აღწერს, როგორ გადავიდნენ. დასასრულს: AOL-მა CMS დროებითი გამოსავლიდან არასოდეს გადაიყვანა — კოდი იქ 2020 წლისთვის პლატფორმის დახურვამდე მუშაობდა.

SSiTech

SiTech — AI-გაძლიერებული ვებ დეველოპმენტი

ვქმნით სწრაფ, თანამედროვე ვებსაიტებს და AI-ს ვაერთიანებთ ქართული ბიზნესებისთვის. გაქვთ პროექტი ან კითხვა? სიამოვნებით დაგეხმარებით.