我有一个服务器,很多用户将连接到它并在那里使用数据库,我正在使用MySQL.我知道max_connectionsMySQL 中的默认数量是100或150,但我确定我需要超过这个数字,因此我使用以下来增加数字:
SET global max_connections = 1000000
Run Code Online (Sandbox Code Playgroud)
现在我尝试检查max_connections如下:
show variables like 'max_connections'
Run Code Online (Sandbox Code Playgroud)
它给了我以下内容:
max_connections; 100000;
Run Code Online (Sandbox Code Playgroud)
这是成功的标志(除非我理解错了).当我的用户开始连接时,当连接的用户数超过110时,我从服务器收到错误.错误是:
错误连接:超时已过期.从池中获取连接之前经过的超时时间.这可能是因为所有池连接都在使用中并且达到了最大池大小.
为什么我会收到此错误,以及如何解决此问题?
我们都知道新款iPhone 5的屏幕分辨率有所提高.另一方面,新款iPhone 5需要一段时间才能在市场上流行.如果我有一个我即将提交给Apple App Store的应用程序,并且我没有考虑iPhone 5中的新分辨率,Apple会接受吗?
我不是说我永远不会考虑新的解决方案,但我的意思是,因为我在应用程序上工作了很长时间,而且由于新的iPhone不会很快被广泛使用,我现在可能会提交应用程序并在未来几个月内提交更新,以考虑新的决议.
我的应用程序已获得Apple批准.
我想通知您,我推出iPhone 5后提交的应用程序已被Apple接受,尽管其中没有任何iPhone 5分辨率考虑因素,因此下面的答案是100%正确的.
我正在编写一个应用程序,我需要阅读地址簿数据来搜索一些感兴趣的联系人,类似于现在许多应用程序所做的事情(如Viber,Whatsapp,Tango ......).我需要进行匹配,因此我将数据发送到服务器并回复客户端哪些联系人在其设备上安装了相同的应用程序.
我的想法的逻辑或机制没有问题,我的问题是速度!我能够做我想要的但是这个过程需要27秒才能完成,iPhone4上有500个联系人.如果我们尝试Viber或Whatsapp(或任何类似的应用程序),在相同的设备上,该过程只需不到5秒.
我的方法很简单,我做一个for循环并读取所有内容.我怎么能做同样的事情,但比其他应用程序更快?
这是我使用的代码:
//variable definitions
ABAddressBookRef addressBook = ABAddressBookCreate();
CFArrayRef people = ABAddressBookCopyArrayOfAllPeople(addressBook);
CFMutableArrayRef peopleMutable = CFArrayCreateMutableCopy(kCFAllocatorDefault, CFArrayGetCount(people), people);
//sort the contents of the Mutable Array
CFArraySortValues(peopleMutable, CFRangeMake(0, CFArrayGetCount(peopleMutable)), (CFComparatorFunction) ABPersonComparePeopleByName, (void*) ABPersonGetSortOrdering());
//read the Address Book
NSString *fullName, *number;
ABRecordRef record = ABPersonCreate();
ABMutableMultiValueRef multi;
int contactID;
int nameCount=0;//used to count the names in the string to send to server
NSMutableString *strNamesToSend = [[NSMutableString alloc] init];
for(CFIndex i=0; i< CFArrayGetCount(people); i++)
{
record = CFArrayGetValueAtIndex(people, i);
multi …Run Code Online (Sandbox Code Playgroud) 我正在编写一个应用程序,我需要将所有地址簿内容(即名称和数字)发送到服务器上,在服务器上进行交叉,以通知用户他的联系人中的哪些朋友在他们的设备上安装了此应用程序(类似于现今大多数通信应用程序的东西).我的问题不在于如何做到这一点的概念,我的问题在于客户端和服务器之间的速度和同步.
要从通讯簿中检索姓名和号码,我会做一个简单的循环并将答案存储在NSMutableArray如下:
for(CFIndex i=0; i< CFArrayGetCount(peopleMutable); i++)
{
record = CFArrayGetValueAtIndex(peopleMutable, i);
multi = ABRecordCopyValue(record, kABPersonPhoneProperty);
//Contact ID
contactID = (int)ABRecordGetRecordID(record);
//Full Name
fullName = [NSString stringWithFormat:@"%@ %@", (NSString *)ABRecordCopyValue(record, kABPersonFirstNameProperty), (NSString *)ABRecordCopyValue(record, kABPersonLastNameProperty)];
int multiCount = ABMultiValueGetCount(multi);
for(CFIndex j=0; j<multiCount; j++)
{
number = (NSString *)ABMultiValueCopyValueAtIndex(multi, j);
[arrayNamesToSend addObject:[NSString stringWithFormat:@"%u;%@;%@;", contactID, fullName, number];];
}
}
Run Code Online (Sandbox Code Playgroud)
那么这个循环在大约一秒钟内完成(即使你有超过1000个接触,最多2秒).让我们来谈谈一个普通的案例:平均而言,地址簿中可能有500个名字,每个名字平均长度为15个字符,每个电话号码平均为15个字符(国际格式),因此这导致一共有15,000个字符要发送到服务器.根据我在客户端服务器编程方面的谦虚知识,不建议在一条消息中从客户端向服务器发送大量字节,建议的大小在每条消息的1024到4096字节之间.
现在我如何将这些联系人发送到服务器?我想到了:
有关如何解决此问题的任何建议?有没有办法将整个通讯簿作为一个文件上传到服务器,然后服务器将解决它并完成其工作?提前谢谢了.
我迁移到Xcode 5并开始为iOS 7编程.我试图手动(以编程方式)设置我的标签位置,以便为iPhone 4设备和iPhone 5设备生成不同的布局.我想这应该很容易,如下:
在viewDidLoad:
myLabel.autoresizingMask = UIViewAutoresizingNone;
myLabel.frame = CGRectMake(10, 10, 280, 21);
Run Code Online (Sandbox Code Playgroud)
至少StackOverflow上的所有文章都说这样做,但它不适合我.无论我输入什么值,标签都不会改变位置CGRectMake.我甚至尝试过相同的代码,viewWillLayoutSubviews但也没有用.如果我NSLog是新的坐标,它会告诉我它需要它们,但是在模拟器上标签位置没有变化.
有什么建议?
在我的应用程序中,对于第一次推送通知注册,我didRegisterForRemoteNotificationsWithDeviceToken在持久性中调用并保存设备令牌,以及更新设备令牌的服务器列表.之后如果有人从iPhone设置中关闭推送通知设置,我如何从我的应用程序中确定它,以便我也可以从服务器中删除设备令牌.我知道APNS提供了一个反馈列表,但除此之外是否有办法以编程方式在App中确定它?谢谢你的帮助!
ios ×5
iphone ×5
addressbook ×2
cocoa-touch ×1
database ×1
devicetoken ×1
ios7 ×1
iphone-5 ×1
mysql ×1
networking ×1
uilabel ×1
xcode5 ×1