2011-07-28 16 views
7

Olası Çoğalt: Bu istendi, ben etrafına baktı ama gerçekten aradığı şeyi bulmak vermedi Ruby'de bir dizinin boyutunda bir sınır var mı?

Maalesef
Array size too big - ruby

.

Mysql tablosunda tek bir sütuntan oluşan bir dizi oluşturmak için ruby ​​ve mysql kullanıyorum. Biz çok fazla kullanıcıya Recieving başladığında bu, şu ana kadar ince çalıştı

users = [] #declare array 
users.clear #clear array so that it remains so fresh and so clean on each restart 

# Update the list of users to follow 
res = dbh.query("SELECT user FROM usernameDB") 
while row = res.fetch_row do 
    users << row[0] #adds each user to the array 
end 

: Örneğin Yani, kullanıcı adlarının bir sütun olduğunu varsayalım. Şimdi kod bana bilinmeyen hatalar veriyor.

Sorun gidermeye yönelik bir girişimde, yalnızca bir çoğunu yorumladım ve diziyi birkaç kullanıcı adıyla oluşturdum ve her şey yeniden çalıştı. Yani sorum şu ki, bir ruby ​​dizisindeki sayılara veya öğelere bir sınır var mı?

Teşekkürler!

+2

'Bilinmeyen hatalar' bildirebilir misiniz. – knut

+0

Benzer bir sorunum var. ActiveRecord sorgusundan veri içeren bir dizi oluşturuyorum ve bazı büyük boyutlarda başarısız veya zaman aşımına uğradım. Diğerleri de belirttiği gibi, dizi çok büyük değil - başka bir şey olmalı. Benim dizi toplam uzunluğu, milyonlarca değil, binlerce olmalıdır ... – Drew

cevap

4

Ruby tarafından uygulanan bir yazılım sınırı yoktur, ancak işlemin ne kadar destekleyebileceği konusunda bir sınır vardır. Ruby sunucusunu çalıştıran normal bir ev sunucunuz varsa, dizi çok büyük olana kadar bir dizi işlem yapabilirdi, bu noktada "batağa", gecikmeye, çökmeye vb. Başlayacaktı. Öte yandan, Eğer çok güçlü bir şirket sunucunuz varsa, çok daha büyük bir diziyi ele alabilir, ancak eğer dizi işlem için çok büyük ve işlemek için donanım (bellek) ise, yine de çökme/gecikme olur.

Sizin için herhangi bir somut numaram yok, çünkü her şey sunucudaki donanım ve yazılıma bağlı.

+0

Dreamhost üzerinde çalışıyor. Üzgünüm, eğer bu yanlış cevapsa, genel olarak yakacak bir şeyim var. – bradleygriffith

+0

Sorun değil. Dreamhost'un sunucuları için ne gibi kaynaklara sahip olduğuna bağlı. Bence cömert bir beden dizisi oluşturabilirsin, ama birçok şeyi kapsayan her şey çok fazla olabilir. Sadece tahmin et ve kontrol et - ve Dreamhost'tan sunucu kaynaklarının nereye gittiğini soran bir e-posta alırsan bana isim verme! :) – dwmcc

2

Diğer bir gönderiye göz atın: Array size too big - ruby. 600 milyon büyüklük çok büyüktü, ama 500 milyon çalıştı.

Dizide ne kadar büyüklükte çalışıyorsunuz? Sorun şu ki hafızanız bitiyor olabilir!

+0

tabloda 436 satır vardır, bu yüzden 436 kullanıcı adı bir dizi oluşturmaya çalışıyorum. – bradleygriffith

+3

436 kullanıcı adı hiçbir şeydir. Devam eden başka bir şey olmalı. – Mchl

+0

Bu kulağa kötü gelmiyor. Sorgu tarafından döndürülen sonuç sayısını 50'ye veya 'SELECT TOP 50' ile sınırlarsanız hala çöküyor mu? – danmcardle

İlgili konular