因项目需要,需要记录用户未来3天的预约时间,每个预约时段为1小时。
例如:00:00:00~00:59:59 或 01:00:00~01:59:59 等为一个预约时段
前端代码如下:
a266f3dca0d5a4549e68239d2de8a2f4 100db36a723c770d327fc0aef2ce13b1 93f0f5c25f18dab9d176bd4f6de5d30e 976640ee24046f5172078150a9b0e182 b2386ffb911b14667cb8f0f91ea547a7 提交预约日期 6e916e0f7d1e588d4f442bf645aedb2f 46d5fe1c7617e3914f214aaf043f4ccf .title{color:#FF0000;} .topic{font-size:18px; font-weight:bold;} 531ac245ce3e4fe3d50054a55f265927 3a92cd40c5e41a3ac5d2ee1eb22aa1532cacc6d41bbb37262a98f745aa00fbf0 8019067d09615e43c7904885b5246f0a function fsubmit(){ var timetable = []; $("#myform input[type=checkbox]").each(function(){ if(this.checked){ timetable.push($(this).val()); } }); if(timetable.length==0){ alert('请选择预约时间'); return false; } $.post("http://localhost/server.php",{timetable:timetable}).done(function(data){ if(data['success']==true){ alert('提交成功'); }else{ alert('提交失败'); } }); } 2cacc6d41bbb37262a98f745aa00fbf0 9c3bca370b5104690d9ef395f2c5f8d1 6c04bd5ca3fcae76e30b72ad730ca86d e7bb7f0263beba4db011e5ec074b43d1请选择预约时间:94b3e26ee717c64999d7867364b1b4a3 2d1b69156f5a9ca58570ee830f726667 76541fb5e7b0d5abaf17f6416b10757b2015-05-28:94b3e26ee717c64999d7867364b1b4a3 e388a4556c0f65e1904146cc1a846bee 8fa66797aee1213ccb693ccebd136638 00:00 957471379fdc4653b90befb99903bce8 01:00 25007a6b23e0c063c46466727231c9bc 02:00 ceb0723432d34885f2425ae5ea1db4c5 03:00 928b8eec99dcf74addb693e770bd7fc1 04:00 a3ec66e3393ce68f86dcd97e2a88a291 05:00 5df53cdd9f73bf7eec8c872a3889f1a8 06:00 6701ac09d3e3fe5a2ec315ca1895462f 07:00 1b71c9b48fc210d1834ba7915c78a4c6 08:00 b848fe1f341e89a8fd1bbf1e1da1dd62 09:00 a3f4031ea5e462d098f3183d65c46b0c 10:00 9d43dc9b799497740ea8e9c460f017d3 11:00 94b3e26ee717c64999d7867364b1b4a3 e388a4556c0f65e1904146cc1a846bee b4642e3df3d3375c687c3557a1cd101c 12:00 907a48b184dce1b81b98e3cfc2f31c6d 13:00 d7c924496009e62a0d94168af0f54963 14:00 adeb17f67cac5d431cc120b5ccb8a252 15:00 a01dbefc065d5eda5ed04c1f4fb5e628 16:00 af36f3a77c189110b0e779bf1830c78e 17:00 154e08165a574b7dfc78267c89f1f99d 18:00 103ad11eeebeb19adaa75226c006e069 19:00 ef0f940fb824b586261b48f183c1a57d 20:00 b1559e3e2ee701fce5b30c1e502e6527 21:00 bf37461752a3345f6cccb237ae3f69b4 22:00 e831aea7d3c307af7c9a1916aeb7681d 23:00 94b3e26ee717c64999d7867364b1b4a3 76541fb5e7b0d5abaf17f6416b10757b2015-05-29:94b3e26ee717c64999d7867364b1b4a3 e388a4556c0f65e1904146cc1a846bee ed1f0761f67a5459c33bf6c5bf19400a 00:00 8a8f03024cbf08044ff6e108126be4cb 01:00 ede74f631c8e636509b9f78b7c80b318 02:00 40288f3951f758a1a30bcbc9f4cb6ad1 03:00 f82b59880d7101ac7db9b6ff8fa90156 04:00 766e8d988af6729a3065a977026f5568 05:00 c2535971b140e3ef15e80e10cf158c00 06:00 67b89c04ec7b123dbbe46705f34afeec 07:00 eac44abc06f0f87fc423c94df27d6520 08:00 b41596713b03c1fd0f6ace424af366e2 09:00 b5ad5e8d4e98e2b1cdcfec82f236b41e 10:00 042d15c5fef8d6db5218225cf8d423d6 11:00 94b3e26ee717c64999d7867364b1b4a3 e388a4556c0f65e1904146cc1a846bee 5bfd9ce9ab972b1da2da8c300c62fd95 12:00 9733e53952fb1fe29631043a657cc947 13:00 17c0bdcdfba59ed01c707427d002f2bf 14:00 c523ceccdb79632b16679bd7aee94418 15:00 cf9db79030d2e6c452bf7e3fc7b9e9d6 16:00 c07699b0700fd092a8bd1687e3e7f30d 17:00 50e6e9e8d6ff62a09c4522c16712b5ff 18:00 f55ff3156749eea453c012e9b8b5bce8 19:00 cf80621208008c5c01c60a9c1af4a12d 20:00 74febcb69a7fb8f913b3fffe965115dc 21:00 bcb2e0914725b1c671f997cabfc91f0c 22:00 2852f55488b75f4faf6a812cc54e51e8 23:00 94b3e26ee717c64999d7867364b1b4a3 76541fb5e7b0d5abaf17f6416b10757b2015-05-30:94b3e26ee717c64999d7867364b1b4a3 e388a4556c0f65e1904146cc1a846bee 703b89ba9529cc2bd239eea0627672d4 00:00 c60e21f504863351df7beb2c82c02b69 01:00 c1063a577011bf856c7cfb6974be13c0 02:00 15e9aab020bf10c9bf34866bd1bab3c5 03:00 59c30949eee3e2c31a98b2df50b1a88b 04:00 54878f9ee7fc3050e764e57626be4b75 05:00 897a36f283a4e8ce916af5deb738236f 06:00 1a8341eb7095c662c750310cfc8abd09 07:00 b27afbf8a974f0bcf9af6f5993e35040 08:00 e9ce35dc78846f33a22772342f8e6109 09:00 45b5f5ea1319f174454664cd9dad25cc 10:00 d5b78febe485ae147a92f3df83227c4a 11:00 94b3e26ee717c64999d7867364b1b4a3 e388a4556c0f65e1904146cc1a846bee 8a51bd8e72fe3368d1dc9105daf2c17e 12:00 045c85f3629b14bed91861476d9aa295 13:00 30a9a59e753d7cacfb6e3223e55b1313 14:00 e60aeac5c388c7bf1a6bb7c5f3a98471 15:00 277d18aa763285c19ae16e18e65522e7 16:00 62dff192b67f71432ffb7c31d88a35d0 17:00 5cc0060e312e87bfb362ac9b9adc3ffb 18:00 ef43e57899138b338a043e9740f57952 19:00 9f714929aa7bfd4cb807d125e07e5600 20:00 b6cf2c027f5861facc96f5d3667c893a 21:00 e5534f6e88e54bf28eac0eb9bb563395 22:00 a05ec6845002035981477904f5c9f03a 23:00 94b3e26ee717c64999d7867364b1b4a3 e388a4556c0f65e1904146cc1a846bee8d20a0f8cf5bd9e3ffeb76c67aa30e5694b3e26ee717c64999d7867364b1b4a3 f5a47148e367a6035fd7a2faa965022e 36cc49f0c466276486e50c850b7e4956 73a6ac4ed44ffec12cee46588e518a5e
后端代码如下:
a421a4f6a4db8927d31a0b2becca72cctrue));?>
例如要提交某个用户的3天预约数据,所有时段都预约(全选)
后端收到的请求数据如下:
["2015-05-28 00:00:00","2015-05-28 01:00:00","2015-05-28 02:00:00","2015-05-28 03:00:00","2015-05-28 04:00:00","2015-05-28 05:00:00","2015-05-28 06:00:00","2015-05-28 07:00:00","2015-05-28 08:00:00","2015-05-28 09:00:00","2015-05-28 10:00:00","2015-05-28 11:00:00","2015-05-28 12:00:00","2015-05-28 13:00:00","2015-05-28 14:00:00","2015-05-28 15:00:00","2015-05-28 16:00:00","2015-05-28 17:00:00","2015-05-28 18:00:00","2015-05-28 19:00:00","2015-05-28 20:00:00","2015-05-28 21:00:00","2015-05-28 22:00:00","2015-05-28 23:00:00","2015-05-29 00:00:00","2015-05-29 01:00:00","2015-05-29 02:00:00","2015-05-29 03:00:00","2015-05-29 04:00:00","2015-05-29 05:00:00","2015-05-29 06:00:00","2015-05-29 07:00:00","2015-05-29 08:00:00","2015-05-29 09:00:00","2015-05-29 10:00:00","2015-05-29 11:00:00","2015-05-29 12:00:00","2015-05-29 13:00:00","2015-05-29 14:00:00","2015-05-29 15:00:00","2015-05-29 16:00:00","2015-05-29 17:00:00","2015-05-29 18:00:00","2015-05-29 19:00:00","2015-05-29 20:00:00","2015-05-29 21:00:00","2015-05-29 22:00:00","2015-05-29 23:00:00","2015-05-30 00:00:00","2015-05-30 01:00:00","2015-05-30 02:00:00","2015-05-30 03:00:00","2015-05-30 04:00:00","2015-05-30 05:00:00","2015-05-30 06:00:00","2015-05-30 07:00:00","2015-05-30 08:00:00","2015-05-30 09:00:00","2015-05-30 10:00:00","2015-05-30 11:00:00","2015-05-30 12:00:00","2015-05-30 13:00:00","2015-05-30 14:00:00","2015-05-30 15:00:00","2015-05-30 16:00:00","2015-05-30 17:00:00","2015-05-30 18:00:00","2015-05-30 19:00:00","2015-05-30 20:00:00","2015-05-30 21:00:00","2015-05-30 22:00:00","2015-05-30 23:00:00"]
请求数据content-length:2879
使用这种方式请求数据容量比较大,影响响应时间。
改进方法1:把DateTime格式时间转为时间戳再提交
前端代码修改如下:修改javascript fsubmit方法
<script type="text/javascript"> function fsubmit(){ var timetable = []; $("#myform input[type=checkbox]").each(function(){ if(this.checked){ // 把时间转为时间戳 var time = $(this).val(); var timestamp = Date.parse(new Date(time)); timestamp = timestamp / 1000; timetable.push(timestamp); } }); if(timetable.length==0){ alert('请选择预约时间'); return false; } $.post("http://localhost/server.php",{timetable:timetable}).done(function(data){ if(data['success']==true){ alert('提交成功'); }else{ alert('提交失败'); } }); } </script>
后端收到的请求数据如下:
["1432742400","1432746000","1432749600","1432753200","1432756800","1432760400","1432764000","1432767600","1432771200","1432774800","1432778400","1432782000","1432785600","1432789200","1432792800","1432796400","1432800000","1432803600","1432807200","1432810800","1432814400","1432818000","1432821600","1432825200","1432828800","1432832400","1432836000","1432839600","1432843200","1432846800","1432850400","1432854000","1432857600","1432861200","1432864800","1432868400","1432872000","1432879200","1432882800","1432886400","1432890000","1432893600","1432897200","1432900800","1432904400","1432908000","1432911600","1432915200","1432918800","1432922400","1432926000","1432929600","1432933200","1432936800","1432940400","1432944000","1432947600","1432951200","1432954800","1432958400","1432962000","1432965600","1432969200","1432972800","1432976400","1432980000","1432983600","1432987200","1432990800","1432994400","1432998000"]
请求数据content-length:1916
后端收到后可把时间戳转为datetime格式使用
改进方法2:使用一个32位的整型变量,把每一小时作为32位整型的其中一位来存储
时段与32位整型的对应关系是
从右至左开始是00:00,01:00,02:00,03:00 以此类推,如果有选择的时段则为1,否则为0
例如:需要预约2016-05-28的 10:00,12:00,14:00,16:00,18:00
0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 忽略 忽略 忽略 忽略 忽略 忽略 忽略 忽略 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00
则用32位二进制表示为 1010101010000000000 即10进制349184 = 2的10次方 + 2的12次方 + 2的14次方 + 2的16次方 + 2的18次方
前端代码修改如下:修改javascript fsubmit方法
<script type="text/javascript"> function fsubmit(){ var timetable = []; var tmp = {}; $("#myform input[type=checkbox]").each(function(){ if(this.checked){ // 拆分日期与时间 var datetime = $(this).val(); var datetime = datetime.split(' '); var day = datetime[0]; var time = parseInt(datetime[1].substring(0,2)); // 创建日期与时间数组 if(typeof(tmp[day])=='undefined'){ tmp[day] = []; } tmp[day].push(time); } }); // 合拼数据,转换格式 for(day in tmp){ // 根据数据集合,合拼,创建10进制数据 var time = tmp[day]; var timeint = 0; for(var i=0; i<time.length; i++){ timeint += Math.pow(2,time[i]); } timetable.push(day+' '+timeint); } if(timetable.length==0){ alert('请选择预约时间'); return false; } $.post("http://localhost/server.php",{timetable:timetable}).done(function(data){ if(data['success']==true){ alert('提交成功'); }else{ alert('提交失败'); } }); } </script>
后端收到的请求数据如下:
["2015-05-28 16777215","2015-05-29 16777215","2015-05-30 16777215"]
请求数据content-length:107
使用这种方法,一天不管选了多少个预约时段,都只会有一条记录,大量减少提交的数据大小。
后端把10进制转换为时间的方法:
1.把10进制转为2进制,并反转
2.循环判断每一位,记录值为1的
3.记录保存
代码如下:
<?php$datetime = '2015-05-28 1398016';list($day, $time) = explode(' ', $datetime);$bintime = decbin($time);$bintime = strrev($bintime);$result = array();for($i=0,$len=strlen($bintime); $i<$len; $i++){ if(substr($bintime, $i, 1)==1){ $result[] = $day.' '.str_pad($i, 2, '0', STR_PAD_LEFT).':00:00'; } } print_r($result);?>
输出:
Array( [0] => 2015-05-28 08:00:00 [1] => 2015-05-28 10:00:00 [2] => 2015-05-28 12:00:00 [3] => 2015-05-28 14:00:00 [4] => 2015-05-28 16:00:00 [5] => 2015-05-28 18:00:00 [6] => 2015-05-28 20:00:00)
总结:本文提供一种可以把大量数据转换为小容量数据传输的方法,但需要加入更多的运算。因此实际开发中需根据实际需求来判断是否适合用时间换空间,或空间换时间的算法。
本篇文章讲解了优化客户端调用服务端接口减少请求数据容量,更多相关内容请关注php中文网。
相关推荐:
以上是优化客户端调用服务端接口减少请求数据容量的详细内容。更多信息请关注PHP中文网其他相关文章!

TheSecretTokeEpingAphp-PowerEdwebSiterUnningSmoothlyShyunderHeavyLoadInVolvOLVOLVOLDEVERSALKEYSTRATICES:1)emplactopCodeCachingWithOpcachingWithOpCacheToreCescriptexecution Time,2)使用atabasequercachingCachingCachingWithRedataBasEndataBaseLeSendataBaseLoad,3)

你应该关心DependencyInjection(DI),因为它能让你的代码更清晰、更易维护。1)DI通过解耦类,使其更模块化,2)提高了测试的便捷性和代码的灵活性,3)使用DI容器可以管理复杂的依赖关系,但要注意性能影响和循环依赖问题,4)最佳实践是依赖于抽象接口,实现松散耦合。

是的,优化papplicationispossibleandessential.1)empartcachingingcachingusedapcutorediucedsatabaseload.2)优化的atabaseswithexing,高效Quereteries,and ConconnectionPooling.3)EnhanceCodeWithBuilt-unctions,避免使用,避免使用ingglobalalairaiables,并避免使用

theKeyStrategiestosiminificallyBoostphpapplicationPermenCeare:1)useOpCodeCachingLikeLikeLikeLikeLikeCacheToreDuceExecutiontime,2)优化AtabaseInteractionswithPreparedStateTemtStatementStatementSandProperIndexing,3)配置

aphpdepentioncontiveContainerIsatoolThatManagesClassDeptions,增强codemodocultion,可验证性和Maintainability.itactsasaceCentralHubForeatingingIndections,因此reducingTightCightTightCoupOulplingIndeSingantInting。

选择DependencyInjection(DI)用于大型应用,ServiceLocator适合小型项目或原型。1)DI通过构造函数注入依赖,提高代码的测试性和模块化。2)ServiceLocator通过中心注册获取服务,方便但可能导致代码耦合度增加。

phpapplicationscanbeoptimizedForsPeedAndeffificeby:1)启用cacheInphp.ini,2)使用preparedStatatementSwithPdoforDatabasequesies,3)3)替换loopswitharray_filtaray_filteraray_maparray_mapfordataprocrocessing,4)conformentnginxasaseproxy,5)

phpemailvalidation invoLvesthreesteps:1)格式化进行regulareXpressecthemailFormat; 2)dnsvalidationtoshethedomainhasavalidmxrecord; 3)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

记事本++7.3.1
好用且免费的代码编辑器