URL kısaltma: inode gibi kısa adını kullanarak?

3 Cevap php

Ben üzerinde çalışıyorum site kendi kısaltılmış URL'ler oluşturmak yerine tinyurl veya bit.ly. gibi üçüncü bir tarafa güvenmek istiyor

Açıkçası ben de siteye eklenen yeni URL'leri saymak ve kısa URL'ler oluşturmak için kullanabilirsiniz bir çalışan tutmak olabilir. Ama önlemek için çalışıyorum ki sadece bu bir şey işi yapmak için bir sürü iş gibi görünüyor çünkü eğer mümkünse.

Kısa URL'ler ihtiyaç şeyleri webserver tüm gerçek fiziksel dosyaları gibi benim şimdiki çözüm kullanmaya hazır ve benzersiz olmasını garanti olanlar zaten benim için oluşturulan olarak inode numaraları kullanmaktır.

function short_name($file) {
   $ino = @fileinode($file);
   $s = base_convert($ino, 10, 36);
   return $s;
}

Bu iş gibi görünüyor. Soru Ben kısa URL bile kısa yapmak için ne yapabilirim, nedir?

Bu kullanılan sistemde, yeni eklenen dosyalar için düğüm 7 karakter uzunluğunda bir dize döndürür yukarıda fonksiyonunu yapan bir aralıkta bulunmaktadır.

Ben güvenli bir inode bit uzak bazı (yarısı?) Atabilir miyiz? Ve eğer öyleyse, bu yüksek bit veya düşük bit olmalıdır?

Ben dosya adının crc32 kullanarak düşündüm, ama aslında inode kullanarak daha benim kısa isimler uzun yapar.

Böyle bir şey çarpışmalar herhangi bir risk olurdu? Ben "$ referencefile" doğru değeri seçerek tek haneli rakamlara aşağı almak mümkün oldum.

function short_name($file) {
   $ino = @fileinode($file);
   // arbitrarily selected pre-existing file,
   // as all newer files will have higher inodes
   $ino = $ino - @fileinode($referencefile);
   $s = base_convert($ino, 10, 36);
   return $s;
}

3 Cevap

Emin değilim, bu iyi bir fikir: sunucusu değiştirmek, ya da disk değiştirmek için varsa / onu yeniden biçimlendirmek, dosyaların düğüm sayıları muhtemelen değişecek ... Ve tüm kısa URL / kaybolur kırılmış olacak!

Aynı şey, eğer herhangi bir nedenle, btw, diskinizin başka bir bölüme dosyalarınızı taşımak gerekir.


Another idea might be to calculate some crc/md5/whatever of the file's name, like you suggested, and use some algorithm to "shorten" it.

İşte bu konuda bir çift makaleler şunlardır:

Orada dosya sisteminin zekice kullanımı. Eğer düğüm kimlikleri benzersiz sayılar üreten onun hızlı bir şekilde benzersiz olduğunu garantili ise. Açıkçası farklı makineler farklı inode numaraları olacaktır, çünkü bu, NFS üzerinden sürekli işe yarayabilir merak ediyorum. Daha sonra sadece orada oluşturmak dosyasında link bilgisini seri ediyorum.

URL'leri biraz kısaltmak için, bunun dışında base62 yaklaşık alırsınız (harf duyarlılığı dikkate almak ve güvenli kodlamaları birini yapabilir - 10 [0-9] + 26 (az) + 26 (AZ), ya da daha az I) l 1 ... Orada örnekler / kütüphanelerin bol vs vs gibi 'çatışma' bazı harflerin kaldırırsanız.

Siz de sizin gibi bir offset ile 'ev' senin kimlikleri, isteyeceksiniz dedi. Ayrıca keyspace kadar yeme vb dosya log / oluşturulmasını temp dosyası tutmak için nasıl anlamaya gerekir.

Lessn Sean Inman tarafından kontrol; Henüz onunla oynadı, ama kendi kendine barındırılan rulo kendi URL çözüm değil.